Background and Introduction

Value-at-risk modeling, or VaR, is a commonly used tool to measure riskiness in a financial institution. CAViaR was a new take on risk modeling originally proposed by Robert Engle and Simone Manganelli in 2004 which builds upon the literature of modeling regression quantiles in settings which are essential.

and agree with the basic premise of the CAViaR paper that many of the nonparametric historical simulation methods don’t have attractive statistical properties and are chosen more for experimental qualities (an example of this in the 1998 paper by Boudoukh, Richardson, and Whitelaw cited by Engle which uses a semiparametric “hybrid” approach) I think trying to think too narrowly about VaR isn’t a very interesting statistical problem - in a sense, VaR is just a useful summarization of quantile risk put into dollar figures for easy consumption In my opinion, the most interesting question in the CAViaR paper isn’t VaR per se, it’s testing their theorems under relaxations of their assumptions to better understand their approach to extreme value theory. In particular, the following analyses catch my eye: How important is the assumption C2 on page 374 of the CAVIAR paper (which underlies Theorem 1 about the consistency of the estimator beta hat)? It states that “conditional on all of the past information…the error terms form a stationary process”. It may be an interesting test to see how much nonstationarity affects the consistency of the estimator beta hat. I could do this via simulation and see if there’s a lot of value here, which may lead us to a more fundamental result. In my opinion, theorems 4 and 5 (p. 371) are the most important in the paper because they state that the DQ_IS and DQ_OOS quantities are pivotals asymptotically. But it begs the question of how much does that matter, especially in the context of VaR, which in all likelihood is working with limited data? Therefore, it seems to me that the DQ8 and DQ9 assumptions are the shakiest assumptions required for theorem 5. It might be interesting to see how far off from a chi-squared distribution real-world data actually is. This may allow us to develop “rules of thumb” about the accuracy of these asymptotic distributions.

Methods Used

Fill in.

Data Used

Results

CODE

Libraries

# Read in relevant libraries
library(microbenchmark)
library(data.table)
library(quantmod)
library(ggplot2)
library(tseries)
library(zoo)
library(magrittr)
library(dplyr)
library(kableExtra)
library(formattable)
library(quantreg)
library(MTS)
library(plot3D)
# Set up working directory
# setwd("~/Documents/GitHub/CaviaR")
# source('caviar_SM.R')
source('~/Documents/GitHub/CaviaR/caviar_SM.R')
The working directory was changed to /Users/stevenmoen/Documents/GitHub/CAViaR inside a notebook chunk. The working directory will be reset when the chunk is finished running. Use the knitr root.dir option in the setup chunk to change the working directory for notebook chunks.
# This code below is for use in the CAViaR sections.
# Here is code that I'll wrap some parts in to avoid superfluous output
quiet <- function(x) { 
  sink(tempfile()) 
  on.exit(sink()) 
  invisible(force(x)) 
} 

Univariate CAViaR Section

#' This is a function which pulls data for use in the CAViaR model
#'
#' @param symbol - symbol to pull
#' @param compl_case - defaults to true...only includes complete cases in the data
#' @param adj_close - use adjusted closing prices. Default is yes.
#' @param log_return - use log return? Default is yes.
#'
#' @return - a data frame which can be fed into later functions
#' @export
#'
#' @examples - data_pull("SPY")
data_pull = function(symbol, compl_case = 1, adj_close = 1, log_return = 1, start_date = "1900-01-01", end_date = Sys.Date()){
  # Pull in data from quantmod
  response_pull = getSymbols(symbol, auto.assign = FALSE, from = start_date, to = end_date)
  # Get adjusted closing price
  if (adj_close == TRUE){
    df = Ad(response_pull)
  } else {
    df = Cl(response_pull)
  }
  # Return complete cases only 
  if (compl_case == TRUE){
    df = df[complete.cases(df), ]
  } else{
    df = df
  }
  # Calculate log return of data
  if (log_return == TRUE){
    lr = log(df[,1]/shift(df[,1], 1, type = "lag"))
    # Combine data
    df_out = cbind(df, lr)
    # Rename the data 
    colnames(df_out) <- c(sym=symbol, paste0(symbol, "_log_return"))
  } else{
    df_out = df
  }
  # Return data
  return(df_out)
}
#' Pull the data and run the CAViaR function on it
#'
#' @param input_data - data to use in the function
#' @param range_data - range of the data to use
#'
#' @return - a list of values from the caviar function
#' @export
#'
#' @examples - caviar_pull(spy)
caviar_pull = function(input_data, range_data = (2:dim(input_data)[1])){
  # Run the caviar data
  caviar <- caviarOptim(input_data[range_data,2])
  return(caviar)
}
#' Function for producing rolling predictions
#' Model 1 = Symmetric Absolute Value, 2 = Asymmetric slope, 3 = Indirect GARCH, 4 = Adaptive
#'
#' @param input_data - input data from the previous function
#' @param range_data - range of the data to consider
#' @param nfcst - number of forecasts to make
#' @param model - model to use (integers 1 through 4). Defaults to 1. 
#' @param level - level of significance to use.
#' @param G - argument for the k parameter in the 4th model (adaptive). Default is 5
#'
#' @return - an xts object which contains rolling CAViaR predictions
#' @export
#'
#' @examples - rolling_predictions(spy, nfcst = 22)
rolling_predictions = function(input_data, range_data = (2:dim(input_data)[1]), nfcst = 250, model =1, level = 0.01, G = 5, col = 2){
  # Run the varpredict function
  varpredict <- rollapplyr(input_data[range_data,col], length(range_data) - nfcst, caviarOptim, model, level, predict = 1, k = G) %>% lag
  # Eliminate NAs
  # pred_no_na = na.omit(varpredict)
  # Return the data
  # return(pred_no_na)
  return(varpredict)
}
#' Function to Calculate Loss from the above predictions
#'
#' @param symbol - symbol to work with from quantmod. Must be in quotations to work
#' @param start_dt - start date of the data to build the forecast on 
#' @param end_dt - end date of the data to build the forecast on  
#' @param nfcst - number of data points to use in the forecast
#' @param model - model to use. Defaults to 1
#' @param level - level of significance. Defaults to 1%
#' @param G - argument for the k parameter in the 4th model (adaptive). Default is 5
#'
#' @return - loss using absolute value
#' @export - a plot of the data
#'
#' @examples
loss_calc_uv = function(symbol, start_dt, end_dt, nfcst, model = 1, level = 0.01, G = 5){
  # Pull in the data
  raw_data = data_pull(symbol, start_date = start_dt, end_date = end_dt)
  # Forecast based on the data
  fcst = na.omit(rolling_predictions(raw_data, nfcst = nfcst, model = model, level = level, G = G))*(-1)
  # Extract actuals
  act = tail(raw_data, n = nfcst)[,2]
  # Join the two together and rename
  join = merge(fcst,act,all=TRUE)
  colnames(join) <- c("Fcst_VaR", "Act_Return")
  # print(join)
  # Calculate the losses
  loss = abs(sum(ifelse(act > fcst, level, (-1)*(1-level))))
  # Plot the data
  plot = plot.xts(join, col = c("red", "black"), lty = c(2,1), main = "Log Return from the SPY vs. Fcst. VaR",grid.col = NA, legend.loc = "bottomleft")
  return(list(loss, plot, act, fcst))
}

MV Caviar - Pulling the data

#' This is a function which creates a data frame for the response and explanatory variables that we'll feed into the diffusion index
#'
#' @param symbol_list - a list of symbols recognizable by the 
#' @param resp_var - the response variable we'd like to forecast; default is SPY
#' @param compl_case - defaults to true...only includes complete cases in the data
#' @param adj_close - use adjusted closing prices for the explanatory variables? default is 1 for YES
#' @param resp_adj_close - use adjusted closing prices for the explanatory variables? default is 1 for YES
#' @param start_date - starting data to use
#' @param end_date - ending date of the data
#' @param lag_pred - do we lag the predictions? It is STRONGLY recommended that this is 0
#'
#' @return - a data frame which can be fed into the SWfore function
#' @export
#'
#' @examples - diff_index_df(c("XLF", "XLE", "PSCT", "XLV", "VPU", "XLP", "IGF", "XWEB", "PPTY"))
diff_index_df = function(symbol_list, resp_var = "SPY", compl_case = 1, adj_close = 1, resp_adj_close = 1, start_date = "1900-01-01", end_date = Sys.Date(), lag_pred = 1){
  # Pull in response variable
  response_pull = getSymbols(resp_var, auto.assign = FALSE, from = start_date, to = end_date)
  # Get adjusted closing price
  if (resp_adj_close == TRUE){
    diff_df = Ad(response_pull)
  } else {
    diff_df = Cl(response_pull)
  }
  # Loop through the symbols and join in data
  for (i in 1:length(symbol_list)){
    # Pull closing price
    expl_pull = getSymbols(symbol_list[i], auto.assign = FALSE, from = start_date, to = end_date)
    # Extract closing price - 4th element
    if (adj_close == TRUE){
      expl_cl = Ad(expl_pull)
    } else {
      expl_cl = Cl(expl_pull)
    }
    # New code for 4.16.2020 - lag the explanatory variables
    if (lag_pred == TRUE){
      # Lag the explanatory variables by 1
      lag_exp = lag(expl_cl, 1)
      # Append the first lag to the data frame
      diff_df = merge(diff_df, lag_exp, join = "left", fill = NA)
    } else{
      # Return the data frame without lags
      diff_df = merge(diff_df, expl_cl, join = "left", fill = NA)
    }
  }
  if (lag_pred == TRUE){
    # Chop off the first row
    diff_df = diff_df[-1,]
  }
  else {
    print("PLEASE NOTE - the explanatory variables in this DF are NOT lagged. Be careful to avoid look-ahead bias!")
  }
  # Return complete cases only 
  if (compl_case == TRUE){
    diff_df_out = diff_df[complete.cases(diff_df), ]
  } else{
    diff_df_out = diff_df
  }
  
  return(diff_df_out)
}
#' Converts a diff_df into a data frame with approximate percentage changes diff(log(diff_df))
#'
#' @param diff_df - output of the diff_index_df function with complete cases
#'
#' @return - retuns the differenced data
#' @export
#'
#' @examples - pc_diff_index(test_compl) 
pc_diff_index = function(diff_df){
  # Difference the log of the data
  pc_diff_index = diff(log(diff_df))
  # Remove the first row
  pc_diff_index_out = pc_diff_index[-1,]
  return(pc_diff_index_out)
}

MV Caviar - Modified DI code

The code that is used in a diffusion index model is as follows. The key is figuring out where to make the extension. I’ll go through and comment everything and see what’s what.

#' Below is the modified diffusion index code.
#'
#' @param y - response variable
#' @param x - predictor variables
#' @param orig - forecast origin
#' @param m - number of diffusion indexes used
#' @param tau - VaR level to use; must be between 0 and 1
#' @param end - specifies an alternate ending value
#' @param print_mdl - print the model summary and the MSE
#'
#' @return - returns a list of variables for use in the diffusion index
#' @export
#'
#' @examples
mod_di = function (y, x, orig, m, tau, end = NULL, print_mdl = 0) 
{
  # Converts the response variables into a matrix
  if (!is.matrix(x)) 
      x = as.matrix(x)
  # nT is number of t time-steps
  nT = dim(x)[1]
  # Add a line to establish the number of data points used in the test.
  if (is.null(end) != TRUE){
    nT = end
  }
  # k is the number of diffusion indices used
  k = dim(x)[2]
  # Sanity checks to ensure that the origin isn't past the number of time points
  if (orig > nT) 
      orig = nT
  # Makes sure that there aren't more predictors than there variables in the dataset
  if (m > k) 
      m = k
  # Makes sure there are at least some variables
  if (m < 1) 
      m = 1
  # Subdivides the dataframe
  x1 = x[1:orig, ]
  # Calculates means of each row
  me = apply(x1, 2, mean)
  # Calculates standard deviations of each column
  se = sqrt(apply(x1, 2, var))
  # Creates a matrix x1, which normalizes all the columns. 
  # This may be an issue since it assumes that the distribution is sufficiently described by the first two moments
  x1 = x
  for (i in 1:k) {
      x1[, i] = (x1[, i] - me[i])/se[i]
  }
  V1 = cov(x1[1:orig, ])
  # Performs an eigen decomposition
  m1 = eigen(V1)
  # Selects eigenvalues
  sdev = m1$values
  # Selects eigenvectors
  M = m1$vectors
  # Makes a smaller matrix
  M1 = M[, 1:m]
  # This is the diffusion index model - [orig x p]*[p x m] = [orig x m]
  Dindex = x1 %*% M1
  # Cut down both the response and predictors to be a reasonable size
  y1 = y[1:orig]
  DF = Dindex[1:orig, ]
  # Apply the linear model - HERE is the key.
  # mm = lm(y1 ~ DF) - old function
  mm = rq(y1 ~ DF, tau = tau)
  # Print the data
  if (print_mdl == 1){
    print(summary(mm))
  }
  # Puts coefficients in a matrix
  coef = matrix(mm$coefficients, (m + 1), 1)
  # Initializes yhat variables and MSE
  yhat = NULL
  MSE = NULL
  if (orig < nT) {
    # Creates a nfcst by (m+1) matrix
    newx = cbind(rep(1, (nT - orig)), Dindex[(orig + 1):nT, 
        ])
    # [nfcstx(m+1)]*[(m+1)x1] = [nfcstx1]
    yhat = newx %*% coef
    # Calculates errors
    err = y[(orig + 1):nT] - yhat
    MSE = mean(err^2)
    if (print_mdl == 1){
      cat("MSE of out-of-sample forecasts: ", MSE, "\n")
    }
  }
  SWfore <- list(coef = coef, yhat = yhat, MSE = MSE, loadings = M1, 
      DFindex = Dindex)
}

Now that we have the function, let’s see if we can get it to work. First, we’ll need to compile all of our data

Let’s add a code which incorporates the previous values of the return.

#' Below is the modified diffusion index code to include lagged variables.
#'
#' @param y - response variable
#' @param x - predictor variables
#' @param orig - forecast origin
#' @param m - number of diffusion indexes used
#' @param tau - VaR level to use; must be between 0 and 1
#' @param ar_tf - AR transformation type. (1 - no transformation,
#' 2 - absolute value, 3 - asymmetric slope)
#' @param p - number of AR lags to include. Default is one.
#' @param print_mdl - option to print the model summary to make sure everytning is ok. 0 is default.
#' @param model - model type (1 - SAV, 2 - AS, 3 - GARCH, 4 - ADAPTIVE) 
#'
#' @return - returns a list of variables for use in the diffusion index
#' @export
#'
#' @examples
mod_di_wl = function (y, x, orig, m, tau, ar_tf = 1, p = 1, print_mdl = 0, model = 1, end = NULL) 
{
  # Converts the response variables into a matrix
  if (!is.matrix(x)) 
      x = as.matrix(x)
  # nT is number of t time-steps
  nT = dim(x)[1]
  # Add a line to establish the number of data points used in the test.
  if (is.null(end) != TRUE){
    nT = end
  }
  # k is the number of diffusion indices used
  k = dim(x)[2]
  # Sanity checks to ensure that the origin isn't past the number of time points
  if (orig > nT) 
      orig = nT
  # Makes sure that there aren't more predictors than there variables in the dataset
  if (m > k) 
      m = k
  # Makes sure there are at least some variables
  if (m < 1) 
      m = 1
  # Subdivides the dataframe
  x1 = x[1:orig, ]
  # Calculates means of each row
  me = apply(x1, 2, mean)
  # Calculates standard deviations of each column
  se = sqrt(apply(x1, 2, var))
  # Creates a matrix x1, which normalizes all the columns. 
  # This may be an issue since it assumes that the distribution is sufficiently described by the first two moments
  x1 = x
  for (i in 1:k) {
      x1[, i] = (x1[, i] - me[i])/se[i]
  }
  V1 = cov(x1[1:orig, ])
  # Performs an eigen decomposition
  m1 = eigen(V1)
  # Selects eigenvalues
  sdev = m1$values
  # Selects eigenvectors
  M = m1$vectors
  # Makes a smaller matrix
  M1 = M[, 1:m]
  # This is the diffusion index model - [orig x p]*[p x m] = [orig x m]
  Dindex = x1 %*% M1
  # Cut down both the response and predictors to be a reasonable size
  y1 = y[1:orig]
  DF = Dindex[1:orig, ]
  # Copy the data frame
  DF_wl = Dindex
  # Lag the y-variable
  for (i in 1:p){
    # Create a lagged variable
    lag_var = lag(y, i)
    # Append the first lag to the data frame
    DF_wl = cbind(DF_wl,lag_var)
  }
  # Identify the right columns
  l_ar = ncol(DF_wl)
  f_ar = l_ar - p + 1
  # Keep the last columns kept to the side
  all_lag = DF_wl[,(f_ar:l_ar)]
  # Cut off the first row to avoid NA's
  DF_trim = DF_wl[1:orig,]
  # Rename the columns
  # Here's the new function with an untransformed AR(p) lag
  if (ar_tf == 1){
    # Incorporate everything in to an input data frame
    df_in = cbind(y1[-(1:p)], DF_trim[-(1:p),])
    # Rename the columns
    # Initialize a character vector
    nvec = c(rep(0, 1+m+p))
    # Populate the vector - first value is the response
    nvec[1] <- names(y)
    # Next are the diffusion indices
    for (i in 1:m){
      nvec[i+1] = paste0("Diff_Index_", i)
    }
    # Next are the lagged variables
    for (i in 1:p){
      nvec[i+1+m] = paste0("Lag_", i)
    }
    # Assign the names
    names(df_in) <- nvec
    # Run the model
    mm = rq(df_in[,1] ~ df_in[,-1], tau = tau)
  }
  # Here's the new function with an SAV AR(p) lag
  if (ar_tf == 2){
    # Incorporate everything in to an input data frame
    df_in = cbind(y1[-(1:p)], DF_trim[-(1:p),-(f_ar:l_ar)], abs(DF_trim[-(1:p),(f_ar:l_ar)]))
    # Rename the columns
    # Initialize a character vector
    nvec = c(rep(0, 1+m+p))
    # Populate the vector - first value is the response
    nvec[1] <- names(y)
    # Next are the diffusion indices
    for (i in 1:m){
      nvec[i+1] = paste0("Diff_Index_", i)
    }
    # Next are the lagged variables
    for (i in 1:p){
      nvec[i+1+m] = paste0("Lag_", i)
    }
    # Assign the names. Note that this is a matrix
    names(df_in) <- nvec
    # Run the model
    mm = rq(df_in[,1] ~ df_in[,-1], tau = tau)
  }
  # Here's the new function with an asymmetric slope for the AR(1) lag
  # Indicator; 0 if percent change is negative, 1 if it's positive
  # indi = ifelse(DF_trim[,ar] < 0, 0, 1)
  if (ar_tf == 3){
    # Create a matrix of indicators
    indi_mat = matrix(0, nrow(DF_wl), p)
    # Generalize the above code
    for (i in 1:p){
      # Populate the indicator
      indi_mat[,i] = ifelse(DF_wl[,f_ar + i - 1] < 0, 0, 1)
    }
  }
  # Fitting the regression
  if (ar_tf == 3){
    # Incorporate everything in to an input data frame
    df_in = cbind(y1[-(1:p)], DF_trim[-(1:p),-(f_ar:l_ar)], DF_trim[-(1:p),(f_ar:l_ar)], indi_mat[((p+1):orig),])
    # Rename the columns
    # Initialize a character vector
    nvec = c(rep(0, 1+m+2*p))
    # Populate the vector - first value is the response
    nvec[1] <- names(y)
    # Next are the diffusion indices
    for (i in 1:m){
      nvec[i+1] = paste0("Diff_Index_", i)
    }
    # Next are the lagged variables
    for (i in 1:p){
      nvec[i+1+m] = paste0("Lag_", i)
    }
    # Last are the positive indicator variables
    for (i in 1:p){
      nvec[i+1+m+p] = paste0("Pos_Val_for_Lag_", i)
    }
    # Assign the names. Note that this is a matrix
    names(df_in) <- nvec
    # Run the model
    mm = rq(df_in[,1] ~ df_in[,-1], tau = tau)
    # mm = rq(y1[-(1:p)] ~ DF_trim[-(1:p),-(f_ar:l_ar)] + DF_trim[-(1:p),(f_ar:l_ar)] + indi_mat[((p+1):orig),], tau = tau)
    # Add a different line to account for the indicator variable
    # intercept + m + 2*nlag to account for the number of indicator variables
    coef = matrix(mm$coefficients, (1 + m + 2*p), 1)
  }
  if (print_mdl == 1){
    print(summary(mm))
  }
  # Puts coefficients in a matrix - added the AR terms
  # coef = matrix(mm$coefficients, (m + 1), 1)
  if (ar_tf != 3){
    coef = matrix(mm$coefficients, (1 + m + p), 1)
  }
  # Initializes yhat variables and MSE
  yhat = NULL
  loss = NULL
  if (orig < nT) {
    # Creates a nfcst by (m+2) matrix
    # Add on the lagged variables
    newx = cbind(rep(1, (nT - orig)), Dindex[(orig + 1):nT, ], all_lag[(orig+1):nT,])
    # Incorporate lagged variables
    if (ar_tf == 3){
      newx = cbind(rep(1, (nT - orig)), Dindex[(orig + 1):nT, ], all_lag[(orig+1):nT,], indi_mat[(orig+1):nT,])
    }
    # [nfcstx(m+1)]*[(m+1)x1] = [nfcstx1]
    yhat = newx %*% coef
    # Calculates errors
    loss = abs(sum(ifelse(y[(orig + 1):nT] > yhat, tau, (-1)*(1-tau))))
    # Modifying this part to only print this if specified
    if (print_mdl == 1){
      cat("Losses of out-of-sample forecasts: ", loss, "\n")
    }
  }
  SWfore <- list(coef = coef, yhat = yhat, loss = loss, loadings = M1, 
      DFindex = Dindex, name_vector = nvec)
}

MV Caviar - Calcuating losses

# Decide on the optimal number of vectors.
# (y, x, orig, m, tau) 
#' Function that calculates loss over a given period of time for the diffusion index model
#'
#' @param y - response variables
#' @param x - explanatory variable
#' @param orig - forecast origin
#' @param end - forecasting ending. Note: as the function is currently written on 2/24, this option doesn't do anything.
#' @param m - number of diffusion indices to use
#' @param tau - VaR level
#' @param mod_di - use the modified DI?
#'
#' @return - returns a list of the loss sum and the loss vector
#' @export
#'
#' @examples - loss_calc(pc_df[,1], pc_df[,-1], 757, 1027, 1, 0.01)
loss_calc = function(y, x, orig, m, tau, mod_di = 0, ar_tf = 1, p = 1, print_mdl = 0, model = 1, end = NULL){
  # Extract y_hat values
  if (mod_di == 0){
    di = mod_di(y=y,x=x,orig=orig,m=m, tau=tau, end = end, print_mdl = print_mdl)
  }
  else {
    di = mod_di_wl(y=y,x=x,orig=orig,m=m, tau=tau, ar_tf = ar_tf, p = p, print_mdl = print_mdl, model = model, end = end)
  }
  # mod_di_wl = function (y, x, orig, m, tau, ar_tf = 1, p = 1, print_mdl = 0, model = 1)
  yhat = di$yhat[1:(end-orig)]
  # Calculate the loss
  # Initialize loss vector
  lvec = rep(0,(end-orig))
  # Take the difference
  for (i in 1:(end-orig)){
    # Calculate an indicator variable
    ind = ifelse(y[orig+i] < yhat[i], 1,0)
    # Use indicator in function below
    lvec[i] = (tau - ind)*(y[orig+i] - yhat[i])
  }
  # Add up the losses - change to look at sum of losses. Won't change decision criterion
  sumloss = sum(lvec)
  # sumloss = sum(lvec)/length(lvec)
  return(list(sumloss,lvec))
}

MV Caviar - Choosing the optimal number of predictors

#' Function that selects the optimal number of predictors
#'
#' @param y - response vector
#' @param x - predictor variables
#' @param orig - forecast origin
#' @param end - ending of validation set
#' @param tau - VaR in question
#' @param low_m - low value of m to consider
#' @param high_m - high value of m to consider
#'
#' @return - returns the optimal value of m
#' @export
#'
#' @examples - opt_m(pc_df[,1], pc_df[,-1], 757, 1027, 0.01, low_m =1, high_m  = 5)
opt_m = function(y, x, orig, end = NULL, tau, low_m = 1, high_m, mod_di = 0, ar_tf = 1, p = 1, print_mdl = 0, model = 1, rowname = NULL){
  # Initialize a loss vector
  loss_vec = rep(0,high_m-low_m + 1)
  # Initialize an m vector
  m_vec = seq(low_m, high_m, by = 1)
  # Loop through and populate the loss vector
  for (i in 1:length(loss_vec)){
    loss_vec[i] = quiet(loss_calc(y=y,x=x,orig=orig,end=end, m = m_vec[i], tau = tau, mod_di = mod_di, ar_tf = ar_tf, p = p, print_mdl = print_mdl, model = model))[[1]]
  }
  # Find the minimizer
  opt_m = which.min(loss_vec)
  opt_p = NA
  # Combine into a data frame
  df = as.data.frame(cbind(opt_m, opt_p))
  names(df) <- c("Optimal m", "Optimal p")
  # Assign a rowname
  if (is.null(rowname) == TRUE){
    # Write the row names
    rownames(df) <- c("MV CAViaR")
  }
  else {
    rownames(df) <- rowname
  }
  # Return the loss_vector and the minimzer
  return(list(opt_m, loss_vec, df))
}
#' Function that selects the optimal number of lags
#'
#' @param y - response vector
#' @param x - predictor variables
#' @param orig - forecast origin
#' @param end - ending of validation set
#' @param tau - VaR in question
#' @param low_m - low value of m to consider
#' @param high_m - high value of m to consider
#'
#' @return - returns the optimal value of m
#' @export
#'
#' @examples - opt_mp(y = pc_df[,1], x = pc_df[,-1], orig = 757, end = 1007, tau = 0.01, low_m =1, high_m  = 5, low_p = 1, high_p = 10, ar_tf = 2, mod_di = 1)
opt_mp = function(y, x, orig, end = NULL, tau, low_m = 1, high_m, low_p = 1, high_p, mod_di = 0, ar_tf = 1, print_mdl = 0, model = 1, print_mp = 0, rowname = NULL){
  # Initialize a loss matrix
  loss_mat = matrix(0, high_p-low_p + 1,high_m-low_m + 1)
  # Initialize a p vector
  p_vec = seq(low_p, high_p, by = 1)
  # Loop through and populate the loss vector
  for (i in 1:nrow(loss_mat)){
    loss_mat[i,] = opt_m(y = y, x = x, orig = orig, end = end, tau = tau, low_m = low_m, high_m  = high_m, p = i, mod_di = mod_di, ar_tf = ar_tf, print_mdl = print_mdl, model = model)[[2]]
  }
  # Find the minimizer
  opt_p = which(loss_mat == min(loss_mat), arr.ind = TRUE)[1,1]
  opt_m = which(loss_mat == min(loss_mat), arr.ind = TRUE)[1,2]
  # Print the optimal p and optimal m
  df = as.data.frame(cbind(opt_m, opt_p))
  names(df) <- c("Optimal m", "Optimal p")
  # Assign a rowname
  if (is.null(rowname) == TRUE){
    if (ar_tf == 1){
      # Write the row names
      rownames(df) <- c("MV CAViaR + AR")
    } else if (ar_tf == 2){
      # Write the row names
      rownames(df) <- c("MV CAViaR + SAV")
    } else if (ar_tf == 3){
      # Write the row names
      rownames(df) <- c("MV CAViaR + AS")
    } else {
      rownames(df) <- c("Unknown Model")
    }
  }
  else {
    rownames(df) <- rowname
  }
  # Print the df if the option is turned on
  if (print_mp == 1){
    print(df)
  }
  # Return the loss_vector and the minimzer
  return(list(opt_m, opt_p, loss_mat, df))
}
#' A function that combines optimal values of m and p into a final table
#'
#' @param m1 - the data frame from the "MV CAViaR" run
#' @param m2 - the data frame from the "MV CAViaR + AR" run
#' @param m3 - the data frame from the "MV CAViaR + SAV" run
#' @param m4 - the data frame from the "MV CAViaR + AS" run
#'
#' @return - a nicely formatted table
#' @export
#'
#' @examples - pretty_pm(opt_pred_nl[[3]], opt_pm_m1[[4]], opt_pm_m2[[4]], opt_pm_m3[[4]])
pretty_pm = function(m1, m2, m3, m4){
  # Merge the individual data frames
  pm_pretty_df = rbind(m1, m2, m3, m4)
  # Format nicely
  pm_pretty_df %>% kable(caption = "Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models", digits = 0) %>% kable_styling("striped", full_width = F) %>% kable_styling() %>% footnote(general = "The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model"
  )
  
}

MV Caviar - Running the univariate model multiple times

#' Here is a function that runs the univariate CAViaR model 4 times
#'
#' @param df - the percent change data frame to consider
#' @param nfcst - number of forecasts to run
#' @param tau - the VaR level to consider
#' @param no_run - specifies if any models should not be run
#'
#' @return - a list of the 4 univariate model forecasts
#' @export
#'
#' @examples - aceg = gen_uv_test(pc_df, 1, 0.05, no_run = c(1,1,0,1))
gen_uv_test = function(df, nfcst, tau, no_run = c(0,0,0,0)){
  # model type (1 - SAV, 2 - AS, 3 - GARCH, 4 - ADAPTIVE) 
  # Initialize a list  
  out_list = list()
  # Run the four models - model 1; SAV
  if (no_run[1] == 0){
    uvcav_1 = rolling_predictions(df[,1], range_data = (1:length(df[,1])), nfcst = nfcst, model = 1, G = 10, col = 1, level = tau)
  }
  # Add a filler if there's no entry
  else {
    uvcav_1 = 0
  }
  # Model 2 - AS
  if (no_run[2] == 0){
    uvcav_2 = rolling_predictions(df[,1], range_data = (1:length(df[,1])), nfcst = nfcst, model = 2, G = 10, col = 1, level = tau)
  }
  else {
    uvcav_2 = 0
  }
  # Model 3 - GARCH
  if (no_run[3] == 0){
    uvcav_3 = rolling_predictions(df[,1], range_data = (1:length(df[,1])), nfcst = nfcst, model = 3, G = 10, col = 1, level = tau)
  }
  else {
    uvcav_3 = 0
  }
  # Model 4 - Adaptive
  if (no_run[4] == 0){
    uvcav_4 = rolling_predictions(df[,1], range_data = (1:length(df[,1])), nfcst = nfcst, model = 4, G = 10, col = 1, level = tau)
  }
  else {
    uvcav_4 = 0
  }
  # Export the data as a list
  return(list(uvcav_1, uvcav_2, uvcav_3, uvcav_4))
}

MV Caviar - Plotting function

#' Function to plot the data which we generate in previous functions
#'
#' @param plot_matrix - matrix with the data to plot
#' @param norm_value - what to subtact from the data to make it on a percentage change basis. Default is 100.
#'
#' @return 
#' @export - a plot of the data by diffusion index number
#'
#' @examples = plt_data(plot_mtx[[1]]), abc = plt_data(plot_mat, tau = 0.01)
plt_data = function(plot_matrix, tau, resp_var, ntest){
  # Establish a maximum and minimum value
  max_val = max(plot_matrix[,1:ncol(plot_matrix)])
  min_val = min(plot_matrix[,1:ncol(plot_matrix)])
  # Calculate inital and ending time value
  start = index(plot_matrix)[1]
  end = index(plot_matrix)[nrow(plot_matrix)]
  ind_vals = index(plot_matrix) - start
  # Create an initial plot and add lines
    for (i in 1:ncol(plot_matrix)){
      if (i == 1){
        # 4/2/2020 - fixing the index
        plot.ts(ind_vals,plot_matrix[,i], type = "l", xlab = paste("Days Since", as.Date(start)), ylab = "Percent Change in PG", ylim = c(min_val,max_val), lwd = 1, main = paste("Predicting", resp_var, "Returns from", as.Date(start), "to", as.Date(end)), sub = paste("The VaR Level is ", 100*tau, "%", "; There are ", ntest, " Trading Days Plotted Above", sep = ""))
        # plot.ts(index(plot_matrix), plot_matrix[,i], type = "l", xlab = "Trading Days", ylab = "Percent Change in PG", ylim = c(min_val,max_val), lwd = 1, main = "Predicting PG Returns Over Last 250 Trading Days in 2008", sub = paste("The VaR Level is ", 100*tau, "%", sep = ""))
    } else if(i %in% seq(2,8,1)) {
        lines(ind_vals,plot_matrix[,i], col = i-1, lty = 2)
    } else {
        lines(ind_vals,plot_matrix[,i], col = i-1, lty = 2, lwd = 2)
    }
    }
  # Define a sequence for plotting
  plot_seq = seq(1, ncol(plot_matrix))
  legend("topleft", legend = c(colnames(plot_matrix)), col = plot_seq, lty = c(1, rep(2, 7), rep(3, ifelse(ncol(plot_matrix)-8 <= 0, 0, ncol(plot_matrix)-8))), lwd = c(1, rep(1, 7), rep(2, ifelse(ncol(plot_matrix)-8 <= 0, 0, ncol(plot_matrix)-8))))
  # Add a line for 0
  # abline(h = 0, col = "black", lty = 2)
}

MV Caviar - Old Loss Test Function

#' A function to calculate losses based on the test sample
#'
#' @param true_vec - the true vector of returns
#' @param pred_vec - the predicted vector from the model runs
#' @param tau - VaR level. Must match what the model used
#'
#' @return - total losses and the entire loss vector
#' @export
#'
#' @examples
loss_test = function(true_vec, pred_vec, tau){
  # Initialize a loss vector
  lvec = rep(0, length(true_vec))
  # Initialize a break vector to see when VaR is broken
  bvec = rep(0, length(true_vec))
  for (i in 1:length(true_vec)){
    # Calculate an indicator variable
    bvec[i] = ifelse(true_vec[i] < pred_vec[i], 1,0)
    # Use indicator in function below
    lvec[i] = (tau - bvec[i])*(true_vec[i] - pred_vec[i])
  }
  # Add up the losses
  # sumloss = sum(lvec)/length(lvec)
  sumloss = sum(lvec)
  # Add up the VaR breakage
  varbreak = sum(bvec)/length(bvec)
  return(list(sumloss,lvec, varbreak, bvec))
}

MV Caviar - A generalized loss calculation function

#' A function to calculate losses based on the plot matrix
#'
#' @param data_mat - a matrix of forecasted VaR values, with the true value in the first column
#' @param tau - VaR level. Must match what the model used
#'
#' @return - a list of four items. 
#' 1 = a vector of the losses of all models. 
#' 2 = a vector showing the percentage of VaR breaks by model
#' 3 = the loss matrix
#' 4 = the break matrix
#' @export
#'
#' @examples
gen_loss_test = function(data_mat, tau){
  # Initialize loss and break matrices
  lmat = bmat = matrix(0, nrow = nrow(data_mat), ncol = ncol(data_mat)-1)
  # bvec = rep(0, length(true_vec))
  # Populate the matrices
  for (i in 1:nrow(lmat)){
    for (j in 1:(ncol(lmat))){
      # Calculate an indicator variable
      bmat[i,j] = ifelse(data_mat[i,1] < data_mat[i,j+1], 1,0)
      # Use indicator in function below
      lmat[i,j] = (tau - bmat[i,j])*(data_mat[i,1] - data_mat[i,j+1])
    }    
  }
  # Add up the losses
  sumloss = colSums(lmat)
  # Add up the VaR breakage
  varbreak = colSums(bmat)/nrow(bmat)
  return(list(sumloss, varbreak, lmat, bmat))
}

MV Caviar - Tables function

#' A function to make a nice comparison of losses
#'
#' @param data_mat - input data matrix used in the calculation of losses
#' @param loss_list - a list of the losses calculated from the CAViaR function
#' @param tau - the risk level used
#' @param ntest - the number of test points
#'
#' @return
#' @export - returns a nicely formatted table
#'
#' @examples - pretty_tables(plot_mat, l_list, tau = 0.01)
pretty_tables = function(data_mat, loss_list, tau, ntest){
  # Combine into a data frame
  df = as.data.frame(rbind(loss_list[[1]], loss_list[[2]]))
  # Calculate inital and ending time value
  start = index(data_mat)[1]
  end = index(data_mat)[nrow(data_mat)]
  # Add row/column names
  colnames(df) <- colnames(data_mat[,-1])
  rownames(df) <- c("Losses", "VaR Breaks (%)")
  # Convert to a table
  df %>% kable(caption = paste("Comparison of VaR Methods for a ", tau*100, "% VaR", sep = ""), digits = 3) %>% kable_styling("striped", full_width = F) %>% kable_styling() %>% footnote(general = paste("Calculated using", ntest, "trading days from", as.Date(start), "to", as.Date(end)))
}

Export function

#' A dressed up version of the export function
#'
#' @param var_file - file to export
#' @param path - filepath
#' @param filename - name of the file, ending with .CSV
#'
#' @return
#' @export - exported CSV file
#'
#' @examples - exp_func(var_file = var_1pc_2016_usetf[[1]], path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "TEST.csv")
exp_func = function(var_file, path, filename){
  # Write a zoo
  write.zoo(var_file, paste0(path, filename), quote = FALSE, sep = ",")
}
# exp_func(var_file = var_1pc_2016_usetf[[1]], path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "TEST.csv")

Big Simulation Function

#' This is the "master" function where we'll evaluate the importance of the VaR model over several time periods
#'
#' @param symbol_list - a list of symbols to feed into the model 
#' @param resp_var - the response variable
#' @param compl_case - should the model require complete cases? Default value is 1.
#' @param adj_close - use adjusted close price for the predictors? Default value is 1.
#' @param resp_adj_close - use adjusted close price for the response? Default value is 1.
#' @param start_date - start date to pull data from
#' @param end_date - end date to pull data from
#' @param nval - number of validation points to use
#' @param ntest - number of test points to use
#' @param tau - VaR level to use
#' @param low_m - low number of predictors to test
#' @param high_m  - low number of predictors to test
#' @param uv_list - a list of a pre-run univariate model. If a data frame is not provided, the lengthy uv model will run 
#' @param no_run - things not to run in the model
#' @param low_p - low value for number of lags
#' @param high_p - high value for number of lags
#' @param na_interp - should the function interpolate NA's
#' @param print_mdl - print the model summaries?
#' @param print_mp - print the optimal values for p and m
#' @param lag_pred - do you want to lag the m predictors (default is 1; strongly recommended)
#' @param rowname - what to name the rows of the nice p and m matrix
#' @param export_csv - do you want to export a CSV? Default is 1.
#' @param path - path to export the CSV
#' @param filename - what to name the CSV
#'
#' @return - a list of the plot matrix, a plot, a list with losses, and a table
#' @export - a plot and a table
#'
#' @examples - cav_simul(c("DIS", "GE", "IBM", "MMM", "XOM"), resp_var = "PG", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 5, tau = 0.01, uv_list = uv_cav_list)
cav_simul = function(symbol_list, resp_var, compl_case = 1, adj_close = 1, resp_adj_close = 1, start_date = "1900-01-01", end_date = Sys.Date(), nval, ntest, tau, low_m = 1, high_m, low_p = 1, high_p, uv_list = NULL, no_run = c(0,0,0,0), na_interp = TRUE, print_mdl = 0, print_mp = 0, lag_pred = 1, rowname = NULL, export_csv = 1, path, filename){
  # Select data parameters, pull the data, and percent change the data
  df = diff_index_df(symbol_list = symbol_list, resp_var = resp_var, compl_case = compl_case, adj_close = adj_close, resp_adj_close = resp_adj_close, start_date = start_date, end_date = end_date, lag_pred = lag_pred)
  # Take the percent change of the data
  pc_df = pc_diff_index(df)
  # Extract the legnth of the data frame
  nr = test_end = nrow(pc_df)
  # Calculate the start of the val period, the end of the val period, and the beginning and end of test period
  test_orig = test_end - ntest
  val_end = test_orig
  val_orig = test_orig - nval
  # Test for the optimal number of parameters
  opt_pred_nl = opt_m(y = pc_df[,1], x = pc_df[,-1], orig = val_orig, end = val_end, tau = tau, low_m = low_m, high_m = high_m, rowname = rowname)
  opt_pred_art1 = opt_mp(y = pc_df[,1], x = pc_df[,-1], orig = val_orig, end = val_end, tau = tau, low_m = low_m, high_m = high_m, low_p = low_p, high_p = high_p,mod_di = 1, ar_tf = 1, print_mdl = print_mdl, print_mp = print_mp, rowname = rowname)
  opt_pred_art2 = opt_mp(y = pc_df[,1], x = pc_df[,-1], orig = val_orig, end = val_end, tau = tau, low_m = low_m, high_m = high_m, low_p = low_p, high_p = high_p,mod_di = 1, ar_tf = 2, print_mdl = print_mdl, print_mp = print_mp, rowname = rowname)
  opt_pred_art3 = opt_mp(y = pc_df[,1], x = pc_df[,-1], orig = val_orig, end = val_end, tau = tau, low_m = low_m, high_m = high_m, low_p = low_p, high_p = high_p, mod_di = 1, ar_tf = 3, print_mdl = print_mdl, print_mp = print_mp, rowname = rowname)
  # gen_uv_test(pc_df, 1, 0.05, no_run = c(1,1,0,1))
  # Use the above forecasts to input into the above
  mv_fcst = mod_di(pc_df[,1], pc_df[,-1], orig = test_orig, m = opt_pred_nl[[1]], tau = tau, print_mdl = print_mdl)
  mv_fcst_art1 = mod_di_wl(pc_df[,1], pc_df[,-1], orig = test_orig, m = opt_pred_art1[[1]], p = opt_pred_art1[[2]], tau = tau, ar_tf = 1, print_mdl = print_mdl)
  mv_fcst_art2 = mod_di_wl(pc_df[,1], pc_df[,-1], orig = test_orig, m = opt_pred_art2[[1]], p = opt_pred_art2[[2]], tau = tau, ar_tf = 2, print_mdl = print_mdl)
  mv_fcst_art3 = mod_di_wl(pc_df[,1], pc_df[,-1], orig = test_orig, m = opt_pred_art3[[1]], p = opt_pred_art3[[2]], tau = tau, ar_tf = 3, print_mdl = print_mdl)
  # Calculate the number of predictions
  if (is.null(uv_list) == TRUE){
    # Print a warning
    print("WARNING: Not supplying an input data frame will require this function to run for a significant amount of time (1hr+)")
    # Call the function
    # gen_uv_test = function(df, nfcst, tau, no_run = c(0,0,0,0)){
    # print(head(pc_df))
    uv_list = gen_uv_test(df = pc_df, nfcst = ntest, tau = tau, no_run = no_run)
    # Add to a data frame
    # Incorporate the rolling predictions function results here
  plot_mat = cbind(pc_df[(test_orig+1):nrow(pc_df),1], mv_fcst$yhat[1:ntest], mv_fcst_art1$yhat[1:ntest], mv_fcst_art2$yhat[1:ntest], mv_fcst_art3$yhat[1:ntest], uv_list[[1]][(test_orig+1):test_end]*(-1), uv_list[[2]][(test_orig+1):test_end]*(-1), uv_list[[3]][(test_orig+1):test_end]*(-1), uv_list[[4]][(test_orig+1):test_end]*(-1))
  } else {
    # Assign the columns of the data frame
    # head(var_5pc_2010_usetf[[1]][,6:9])
    # model type (1 - SAV, 2 - AS, 3 - GARCH, 4 - ADAPTIVE) 
    # test_df = head(var_5pc_2010_usetf[[1]][,6:9])
    # test_df$SAV
    # test_df$`Abs. Slope`
    # test_df$`Ind. GARCH`
    # test_df$Adaptive
    plot_mat = cbind(pc_df[(test_orig+1):nrow(pc_df),1], mv_fcst$yhat[1:ntest], mv_fcst_art1$yhat[1:ntest], mv_fcst_art2$yhat[1:ntest], mv_fcst_art3$yhat[1:ntest], uv_list$SAV, uv_list$`Abs. Slope`, uv_list$`Ind. GARCH`, uv_list$Adaptive)
  }
  # Count the NAs and print a warning
  print(paste("NOTE: There are ", sum(is.na(plot_mat)), " NA(s) in the dataset", sep = ""))
  # Linearly interpolate the NAs
  if (na_interp == TRUE){
    # Assign the plot matrix to a new value
    plot_mat_na <- plot_mat
    # Print a warning
    print("WARNING: There were missing values in the plot matrix.")
    # Interpolate the NA's
    for (i in 1:ncol(plot_mat_na)){
      # Interpolate the data
      plot_mat[,i] <- na.approx(plot_mat_na[,i])
    }
  }
  # model type (1 - SAV, 2 - AS, 3 - GARCH, 4 - ADAPTIVE)
  # Add descriptive titles onto the plot_mat
  colnames(plot_mat) <- c("PG", "MV CAViaR", "MV CAViaR + AR", "MV CAViaR + SAV", "MV CAViaR + AS", "SAV", "Abs. Slope", "Ind. GARCH", "Adaptive")
  # Plot everything
  plot = plt_data(plot_mat, tau = tau, resp_var = resp_var, ntest = ntest)
  # Calculate losses
  l_list = gen_loss_test(plot_mat, tau = tau)
  # Put into tables
  tables = pretty_tables(plot_mat, l_list, tau = tau, ntest = ntest)
  # Run the function for optimal p and m
  pm_table = pretty_pm(opt_pred_nl[[3]], opt_pred_art1[[4]], opt_pred_art2[[4]], opt_pred_art3[[4]])
  # Export the matrix
  if (export_csv == 1){
    exp_func(var_file = plot_mat, path, filename)
  }
  # Print the tables and the plot
  print(plot)
  print(tables)
  print(pm_table)
  return(list(plot_mat, plot, l_list, tables, plot_mat_na, pm_table))
}

Sector ETFs as Explanatory Variables

Here’s what I’m thinking.

Lowest level: 1%, 5%, 10% VaR Next, 2008, 2010, 2014, or 2016 Highest - ETF choices 3 x 4 x 5 = 60 runs

# Import the data from CSV's
# abc = read.csv("/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/var_1pc_2008_usetf.csv", sep = ",", header = T)
# head(abc)
# as.xts(abc, order.by = abc[,1])
# test1 <- read.zoo("/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/var_1pc_2008_usetf.csv", sep = ",",  index.column =0, header = T)
# dat_zoo <- read.zoo("/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/var_1pc_2008_usetf.csv", index.column=0, sep=",", header = T, format="%m/%d/%Y")
# dat_zoo <- read.zoo("/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/var_1pc_2008_usetf.csv", index.column=0, sep=",", header = T, FUN=as.yearmon)
# test1
# dat_xts = as.xts(dat_zoo, order.by = dat_zoo[,1])

2008 Ending

U.S. ETFs

# 1%, 5%, 10% VaR - 2008 - 1st set of predictors
var_1pc_2008_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_1pc_2008_us_etf.csv", uv_list = var_1pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
85 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01963   0.00180  -10.93192   0.00000
DF1           0.00051   0.00045    1.13372   0.25718
DF2          -0.00219   0.00107   -2.04376   0.04124
DF3          -0.00032   0.00186   -0.17294   0.86273
DF4          -0.00277   0.00172   -1.61097   0.10750
DF5          -0.00139   0.00187   -0.74506   0.45641
DF6           0.00173   0.00192    0.90022   0.36822
DF7          -0.00036   0.00228   -0.15699   0.87528
DF8           0.00687   0.00244    2.81529   0.00497
DF9          -0.00381   0.00250   -1.52189   0.12835
MSE of out-of-sample forecasts:  0.001003666 
123 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01964   0.00161  -12.15994   0.00000
df_in[, -1]Diff_Index_1  -0.00228   0.00241   -0.94665   0.34405
df_in[, -1]Diff_Index_2  -0.00127   0.00114   -1.12261   0.26187
df_in[, -1]Diff_Index_3  -0.00113   0.00219   -0.51428   0.60717
df_in[, -1]Diff_Index_4  -0.00316   0.00192   -1.64757   0.09976
df_in[, -1]Diff_Index_5  -0.00173   0.00167   -1.03651   0.30022
df_in[, -1]Diff_Index_6   0.00165   0.00212    0.78007   0.43554
df_in[, -1]Diff_Index_7   0.00307   0.00274    1.12105   0.26254
df_in[, -1]Diff_Index_8   0.00858   0.00151    5.67032   0.00000
df_in[, -1]Lag_1         -0.87911   0.77372   -1.13620   0.25615
df_in[, -1]Lag_2          0.08011   0.12803    0.62571   0.53165
df_in[, -1]Lag_3          0.06910   0.13586    0.50860   0.61114
Losses of out-of-sample forecasts:  47.5 
62 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01796  0.00287   -6.26245  0.00000
df_in[, -1]Diff_Index_1  0.00091  0.00082    1.10171  0.27086
df_in[, -1]Diff_Index_2 -0.00194  0.00151   -1.28485  0.19914
df_in[, -1]Diff_Index_3 -0.00103  0.00222   -0.46117  0.64478
df_in[, -1]Diff_Index_4 -0.00053  0.00126   -0.42309  0.67232
df_in[, -1]Lag_1        -0.48564  0.34201   -1.41993  0.15594
Losses of out-of-sample forecasts:  50.5 
134 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value     Std. Error t value   Pr(>|t|) 
(Intercept)                   -0.02014   0.00162  -12.45797   0.00000
df_in[, -1]Diff_Index_1       -0.00197   0.00286   -0.68630   0.49268
df_in[, -1]Diff_Index_2       -0.00116   0.00074   -1.58225   0.11391
df_in[, -1]Diff_Index_3       -0.00126   0.00193   -0.64933   0.51628
df_in[, -1]Diff_Index_4       -0.00240   0.00181   -1.32535   0.18536
df_in[, -1]Diff_Index_5       -0.00261   0.00151   -1.73004   0.08393
df_in[, -1]Diff_Index_6        0.00193   0.00185    1.04458   0.29647
df_in[, -1]Diff_Index_7        0.00369   0.00283    1.30473   0.19229
df_in[, -1]Diff_Index_8        0.00916   0.00159    5.74480   0.00000
df_in[, -1]Lag_1              -0.77976   0.94239   -0.82742   0.40820
df_in[, -1]Lag_2               0.33285   0.18046    1.84444   0.06542
df_in[, -1]Pos_Val_for_Lag_1   0.00124   0.00238    0.51989   0.60325
df_in[, -1]Pos_Val_for_Lag_2  -0.00021   0.00266   -0.08015   0.93613
Losses of out-of-sample forecasts:  49.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.2055217

$rect$left
[1] -14.44

$rect$top
[1] 0.1472487


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.126696536  0.106144369  0.085592201  0.065040034  0.044487866  0.023935699  0.003383532 -0.017168636 -0.037720803

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.046 1.1 1.371 1.265 0.208 0.213 0.219 0.355
VaR Breaks (%) 0.200 0.2 0.212 0.208 0.028 0.028 0.028 0.060
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 9 NA
MV CAViaR + AR 8 3
MV CAViaR + SAV 4 1
MV CAViaR + AS 8 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2008_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_5pc_2008_us_etf.csv", uv_list = var_5pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
28 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01268   0.00082  -15.44148   0.00000
DF1          -0.00023   0.00018   -1.25139   0.21109
DF2          -0.00096   0.00047   -2.05554   0.04009
DF3           0.00022   0.00060    0.37102   0.71070
DF4          -0.00094   0.00073   -1.29368   0.19608
DF5          -0.00078   0.00081   -0.96571   0.33443
DF6           0.00044   0.00072    0.62074   0.53492
DF7           0.00048   0.00074    0.65009   0.51579
DF8           0.00245   0.00120    2.04422   0.04119
DF9          -0.00291   0.00150   -1.93435   0.05335
MSE of out-of-sample forecasts:  0.0007777412 
32 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01291   0.00071  -18.14869   0.00000
df_in[, -1]Diff_Index_1  -0.00065   0.00080   -0.81416   0.41575
df_in[, -1]Diff_Index_2  -0.00126   0.00045   -2.83584   0.00466
df_in[, -1]Diff_Index_3   0.00030   0.00061    0.49174   0.62301
df_in[, -1]Diff_Index_4  -0.00124   0.00059   -2.09871   0.03610
df_in[, -1]Diff_Index_5  -0.00108   0.00064   -1.68962   0.09142
df_in[, -1]Diff_Index_6  -0.00031   0.00079   -0.39091   0.69595
df_in[, -1]Diff_Index_7   0.00177   0.00094    1.88505   0.05972
df_in[, -1]Diff_Index_8   0.00356   0.00112    3.16450   0.00160
df_in[, -1]Lag_1         -0.16043   0.24691   -0.64977   0.51599
df_in[, -1]Lag_2          0.24247   0.06140    3.94886   0.00008
df_in[, -1]Lag_3          0.08760   0.04593    1.90707   0.05680
df_in[, -1]Lag_4          0.06679   0.03489    1.91449   0.05585
Losses of out-of-sample forecasts:  46.5 
14 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.00895   0.00087  -10.33947   0.00000
df_in[, -1]Diff_Index_1   0.00031   0.00031    0.99958   0.31776
df_in[, -1]Diff_Index_2  -0.00108   0.00041   -2.62468   0.00881
df_in[, -1]Diff_Index_3   0.00051   0.00054    0.93956   0.34767
df_in[, -1]Diff_Index_4  -0.00068   0.00063   -1.06921   0.28523
df_in[, -1]Diff_Index_5  -0.00109   0.00052   -2.07679   0.03808
df_in[, -1]Diff_Index_6  -0.00053   0.00075   -0.70287   0.48230
df_in[, -1]Diff_Index_7   0.00047   0.00093    0.50577   0.61313
df_in[, -1]Lag_1         -0.42903   0.13332   -3.21797   0.00133
df_in[, -1]Lag_2         -0.12551   0.12546   -1.00039   0.31737
df_in[, -1]Lag_3         -0.06971   0.06866   -1.01531   0.31021
Losses of out-of-sample forecasts:  72.5 
96 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.01066  0.00149   -7.17961  0.00000
df_in[, -1]Diff_Index_1      -0.00116  0.00084   -1.37936  0.16810
df_in[, -1]Diff_Index_2      -0.00141  0.00041   -3.48137  0.00052
df_in[, -1]Diff_Index_3       0.00009  0.00057    0.15603  0.87604
df_in[, -1]Diff_Index_4      -0.00092  0.00073   -1.27314  0.20327
df_in[, -1]Diff_Index_5      -0.00099  0.00072   -1.36414  0.17284
df_in[, -1]Diff_Index_6       0.00037  0.00073    0.51268  0.60829
df_in[, -1]Diff_Index_7       0.00191  0.00087    2.18535  0.02910
df_in[, -1]Diff_Index_8       0.00367  0.00142    2.58248  0.00995
df_in[, -1]Lag_1             -0.10110  0.26525   -0.38117  0.70316
df_in[, -1]Lag_2              0.15649  0.10015    1.56252  0.11849
df_in[, -1]Lag_3              0.08595  0.08102    1.06079  0.28905
df_in[, -1]Pos_Val_for_Lag_1 -0.00331  0.00114   -2.89656  0.00386
df_in[, -1]Pos_Val_for_Lag_2  0.00040  0.00099    0.40149  0.68814
df_in[, -1]Pos_Val_for_Lag_3 -0.00067  0.00137   -0.48841  0.62537
Losses of out-of-sample forecasts:  52.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1827557

$rect$left
[1] -14.44

$rect$top
[1] 0.1459559


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.1276802810  0.1094047076  0.0911291341  0.0728535607  0.0545779872  0.0363024138  0.0180268404 -0.0002487331 -0.0185243065

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.319 1.344 1.768 1.385 0.651 0.654 0.640 0.956
VaR Breaks (%) 0.260 0.236 0.340 0.260 0.076 0.076 0.064 0.160
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 9 NA
MV CAViaR + AR 8 4
MV CAViaR + SAV 7 3
MV CAViaR + AS 8 3
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2008_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_10pc_2008_us_etf.csv", uv_list = var_10pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.00900   0.00049  -18.44108   0.00000
DF           -0.00020   0.00020   -0.99717   0.31892
MSE of out-of-sample forecasts:  0.0007405698 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.00937     -0.01056 -0.00862
df_in[, -1]Diff_Index_1 -0.00084     -0.00166  0.00041
df_in[, -1]Lag_1        -0.22931     -0.54716  0.16492
df_in[, -1]Lag_2         0.12294      0.01034  0.24553
df_in[, -1]Lag_3         0.09817     -0.04375  0.14156
df_in[, -1]Lag_4         0.03412     -0.01042  0.15543
df_in[, -1]Lag_5         0.05442     -0.04059  0.13683
df_in[, -1]Lag_6        -0.00019     -0.09191  0.08706
df_in[, -1]Lag_7        -0.03915     -0.13420  0.08594
df_in[, -1]Lag_8         0.01733     -0.02710  0.11254
df_in[, -1]Lag_9         0.08550     -0.01044  0.18038
df_in[, -1]Lag_10        0.16122      0.08160  0.25993
Losses of out-of-sample forecasts:  53 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00733  0.00088   -8.36196  0.00000
df_in[, -1]Diff_Index_1 -0.00017  0.00024   -0.71819  0.47281
df_in[, -1]Diff_Index_2 -0.00056  0.00047   -1.20180  0.22973
df_in[, -1]Lag_1        -0.26311  0.11447   -2.29855  0.02174
df_in[, -1]Lag_2        -0.15211  0.10605   -1.43428  0.15181
Losses of out-of-sample forecasts:  62 
2 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.00935  0.00125   -7.48144  0.00000
df_in[, -1]Diff_Index_1      -0.00063  0.00073   -0.86361  0.38801
df_in[, -1]Lag_1             -0.07829  0.24472   -0.31991  0.74910
df_in[, -1]Lag_2             -0.05170  0.08703   -0.59406  0.55260
df_in[, -1]Lag_3              0.11906  0.08116    1.46697  0.14270
df_in[, -1]Pos_Val_for_Lag_1 -0.00171  0.00143   -1.19288  0.23320
df_in[, -1]Pos_Val_for_Lag_2  0.00267  0.00141    1.89324  0.05862
df_in[, -1]Pos_Val_for_Lag_3 -0.00071  0.00136   -0.51695  0.60531
Losses of out-of-sample forecasts:  58 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1684943

$rect$left
[1] -14.44

$rect$top
[1] 0.145146


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.128296536  0.111447107  0.094597678  0.077748248  0.060898819  0.044049390  0.027199961  0.010350532 -0.006498897

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.623 1.564 1.738 1.534 1.077 1.066 1.068 1.366
VaR Breaks (%) 0.328 0.312 0.348 0.332 0.144 0.156 0.140 0.224
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 10
MV CAViaR + SAV 2 2
MV CAViaR + AS 1 3
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Global ETFs

# 1%, 5%, 10% VaR - 2008 - 2nd set of predictors
var_1pc_2008_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_1pc_2008_glob_etf.csv", uv_list = var_1pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
Solution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.02665     -0.03588 -0.02478
DF           0.00086      0.00012  0.00143
MSE of out-of-sample forecasts:  0.00126241 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02611     -0.03349 -0.02568
df_in[, -1]Diff_Index_1  0.00065     -0.00001  0.00536
df_in[, -1]Lag_1         0.00703     -0.90671  1.94815
df_in[, -1]Lag_2        -0.02198     -0.18537  0.46721
df_in[, -1]Lag_3        -0.07331     -0.24457  0.44322
Losses of out-of-sample forecasts:  25.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd  upper bd 
(Intercept)              -0.02542     -0.04460  -0.00913
df_in[, -1]Diff_Index_1   0.00094     -0.01004   0.00862
df_in[, -1]Diff_Index_2   0.00096     -0.00892   0.00833
df_in[, -1]Lag_1         -0.04325    -11.33159   1.20927
df_in[, -1]Lag_2          0.08021     -8.25818   0.63944
df_in[, -1]Lag_3         -0.07949    -21.88645   0.12458
Losses of out-of-sample forecasts:  27.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.04089     -0.12838 -0.02031
df_in[, -1]Diff_Index_1      -0.00064     -0.00281  0.00412
df_in[, -1]Lag_1             -1.01811     -1.82294  0.99335
df_in[, -1]Lag_2              0.04802     -0.86072  0.74928
df_in[, -1]Pos_Val_for_Lag_1  0.02027     -0.01046  0.03851
df_in[, -1]Pos_Val_for_Lag_2  0.00158     -0.00976  0.02246
Losses of out-of-sample forecasts:  24.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.2055217

$rect$left
[1] -14.44

$rect$top
[1] 0.1472487


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.126696536  0.106144369  0.085592201  0.065040034  0.044487866  0.023935699  0.003383532 -0.017168636 -0.037720803

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.740 0.761 0.841 0.867 0.208 0.213 0.219 0.355
VaR Breaks (%) 0.108 0.112 0.120 0.108 0.028 0.028 0.028 0.060
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 3
MV CAViaR + SAV 2 3
MV CAViaR + AS 1 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2008_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_5pc_2008_glob_etf.csv", uv_list = var_5pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.01762     -0.02094 -0.01401
DF           0.00078     -0.00056  0.00136
MSE of out-of-sample forecasts:  0.0009064356 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01771     -0.02109 -0.01345
df_in[, -1]Diff_Index_1  0.00062     -0.00197  0.00287
df_in[, -1]Diff_Index_2 -0.00005     -0.00643  0.00416
df_in[, -1]Diff_Index_3 -0.00161     -0.00535  0.00443
df_in[, -1]Lag_1        -0.09216     -1.00309  0.91421
Losses of out-of-sample forecasts:  30.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01020     -0.01623 -0.00705
df_in[, -1]Diff_Index_1  0.00148      0.00009  0.00224
df_in[, -1]Diff_Index_2  0.00142     -0.00497  0.00399
df_in[, -1]Diff_Index_3 -0.00471     -0.00619  0.00162
df_in[, -1]Diff_Index_4 -0.00335     -0.00692  0.00024
df_in[, -1]Diff_Index_5  0.00185     -0.00544  0.00400
df_in[, -1]Diff_Index_6 -0.00206     -0.01032  0.00323
df_in[, -1]Lag_1        -0.46164     -1.02412  0.00928
df_in[, -1]Lag_2        -0.33403     -0.88949  0.40734
df_in[, -1]Lag_3        -0.07979     -1.12421  0.00930
Losses of out-of-sample forecasts:  90.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.02045     -0.03455 -0.00964
df_in[, -1]Diff_Index_1       0.00062     -0.00210  0.00266
df_in[, -1]Diff_Index_2       0.00115     -0.00671  0.00406
df_in[, -1]Diff_Index_3      -0.00358     -0.00612  0.00428
df_in[, -1]Lag_1             -0.35699     -1.02313  0.86022
df_in[, -1]Pos_Val_for_Lag_1  0.00602     -0.01121  0.01632
Losses of out-of-sample forecasts:  33.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1919429

$rect$left
[1] -14.44

$rect$top
[1] 0.1464776


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.127283291  0.108088998  0.088894706  0.069700413  0.050506120  0.031311828  0.012117535 -0.007076758 -0.026271050

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.160 1.173 2.157 1.283 0.651 0.654 0.640 0.956
VaR Breaks (%) 0.176 0.172 0.412 0.184 0.076 0.076 0.064 0.160
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 3 1
MV CAViaR + SAV 6 3
MV CAViaR + AS 3 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2008_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_10pc_2008_glob_etf.csv", uv_list = var_10pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.01089     -0.01368 -0.00905
DF           0.00017     -0.00063  0.00096
MSE of out-of-sample forecasts:  0.0007500762 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01091     -0.01363 -0.00889
df_in[, -1]Diff_Index_1  0.00018     -0.00135  0.00297
df_in[, -1]Lag_1         0.00218     -0.50289  0.89871
Losses of out-of-sample forecasts:  46 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.00817     -0.01317 -0.00519
df_in[, -1]Diff_Index_1  0.00049     -0.00085  0.00195
df_in[, -1]Lag_1        -0.24268     -1.00372  0.33409
df_in[, -1]Lag_2        -0.21221     -0.74130 -0.13427
Losses of out-of-sample forecasts:  62 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01045     -0.01821 -0.00667
df_in[, -1]Diff_Index_1       0.00004     -0.00100  0.00327
df_in[, -1]Lag_1             -0.02036     -0.48894  0.75808
df_in[, -1]Pos_Val_for_Lag_1 -0.00047     -0.00818  0.00774
Losses of out-of-sample forecasts:  47 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1684943

$rect$left
[1] -14.44

$rect$top
[1] 0.145146


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.128296536  0.111447107  0.094597678  0.077748248  0.060898819  0.044049390  0.027199961  0.010350532 -0.006498897

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.517 1.517 1.791 1.523 1.077 1.066 1.068 1.366
VaR Breaks (%) 0.284 0.284 0.348 0.288 0.144 0.156 0.140 0.224
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 1
MV CAViaR + SAV 1 2
MV CAViaR + AS 1 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Commodity ETFs

# 1%, 5%, 10% VaR - 2008 - 3rd set of predictors
var_1pc_2008_comm_etf = cav_simul(c("DBA", "DBC", "DBE", "DBB"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_comm_ETF_runs/", filename = "var_1pc_2008_comm_etf.csv", uv_list = var_1pc_2008_usetf[[1]])
Error in `[.xts`(x, 1:orig, ) : 
  only zeros may be mixed with negative subscripts

Bond ETFs

# iShares 1-3 Year Treasury Bond Fund (SHY)
# iShares 7-10 Year Treasury Bond Fund (IEF)
# iShares 20+ Year Treasury Bond Fund (TLT)
# iShares iBoxx $ Investment Grade Corporate Bond ETF (LQD)
# 1%, 5%, 10% VaR - 2008 - 4th set of predictors
var_1pc_2008_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_1pc_2008_bond_etf.csv", uv_list = var_1pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonunique
1 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) -0.02064  0.00207   -9.95454  0.00000
DF1         -0.00056  0.00096   -0.58356  0.55965
DF2         -0.00318  0.00325   -0.97617  0.32921
DF3         -0.00144  0.00318   -0.45300  0.65065
DF4          0.00645  0.00816    0.79073  0.42929
MSE of out-of-sample forecasts:  0.001091584 
19 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.02039  0.00204   -9.99155  0.00000
df_in[, -1]Diff_Index_1 -0.00024  0.00066   -0.35738  0.72089
df_in[, -1]Diff_Index_2 -0.00503  0.00284   -1.77151  0.07678
df_in[, -1]Diff_Index_3 -0.00089  0.00350   -0.25285  0.80044
df_in[, -1]Diff_Index_4 -0.00027  0.00808   -0.03395  0.97293
df_in[, -1]Lag_1        -0.33903  0.17325   -1.95692  0.05064
Losses of out-of-sample forecasts:  39.5 
14 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01662  0.00204   -8.16174  0.00000
df_in[, -1]Diff_Index_1 -0.00019  0.00067   -0.27804  0.78104
df_in[, -1]Lag_1        -0.61983  0.39411   -1.57276  0.11609
Losses of out-of-sample forecasts:  53.5 
84 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.03805  0.00703   -5.41433  0.00000
df_in[, -1]Diff_Index_1       0.00064  0.00043    1.50134  0.13359
df_in[, -1]Lag_1             -0.58929  0.16738   -3.52062  0.00045
df_in[, -1]Lag_2             -0.04375  0.20264   -0.21590  0.82911
df_in[, -1]Lag_3             -0.38326  0.25760   -1.48778  0.13713
df_in[, -1]Lag_4             -0.06222  0.13695   -0.45433  0.64969
df_in[, -1]Pos_Val_for_Lag_1  0.00639  0.00254    2.51107  0.01219
df_in[, -1]Pos_Val_for_Lag_2  0.00698  0.00474    1.47353  0.14092
df_in[, -1]Pos_Val_for_Lag_3  0.00914  0.00596    1.53267  0.12568
df_in[, -1]Pos_Val_for_Lag_4  0.00492  0.00211    2.33007  0.02000
Losses of out-of-sample forecasts:  29.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.2055217

$rect$left
[1] -14.44

$rect$top
[1] 0.1472487


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.126696536  0.106144369  0.085592201  0.065040034  0.044487866  0.023935699  0.003383532 -0.017168636 -0.037720803

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.891 1.017 1.271 1.090 0.208 0.213 0.219 0.355
VaR Breaks (%) 0.156 0.168 0.224 0.128 0.028 0.028 0.028 0.060
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 4 NA
MV CAViaR + AR 4 1
MV CAViaR + SAV 1 1
MV CAViaR + AS 1 4
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2008_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_5pc_2008_bond_etf.csv", uv_list = var_5pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
3 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01297   0.00078  -16.64099   0.00000
DF1           0.00013   0.00026    0.50049   0.61684
DF2          -0.00083   0.00103   -0.81343   0.41617
DF3           0.00080   0.00133    0.60000   0.54865
DF4          -0.00130   0.00298   -0.43568   0.66316
MSE of out-of-sample forecasts:  0.0008478894 
4 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01281   0.00074  -17.23371   0.00000
df_in[, -1]Diff_Index_1   0.00018   0.00030    0.59977   0.54879
df_in[, -1]Diff_Index_2  -0.00095   0.00099   -0.96024   0.33717
df_in[, -1]Diff_Index_3   0.00068   0.00126    0.53846   0.59038
df_in[, -1]Diff_Index_4   0.00233   0.00256    0.90781   0.36420
df_in[, -1]Lag_1          0.02486   0.07186    0.34597   0.72944
df_in[, -1]Lag_2          0.21711   0.08336    2.60466   0.00933
df_in[, -1]Lag_3          0.07877   0.07464    1.05528   0.29155
df_in[, -1]Lag_4          0.07798   0.07805    0.99912   0.31798
Losses of out-of-sample forecasts:  46.5 
4 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00920  0.00128   -7.19782  0.00000
df_in[, -1]Diff_Index_1  0.00020  0.00033    0.59733  0.55042
df_in[, -1]Diff_Index_2 -0.00052  0.00114   -0.45969  0.64584
df_in[, -1]Diff_Index_3  0.00109  0.00133    0.81621  0.41458
df_in[, -1]Diff_Index_4 -0.00042  0.00324   -0.13006  0.89654
df_in[, -1]Lag_1        -0.25026  0.12194   -2.05228  0.04040
df_in[, -1]Lag_2        -0.34951  0.17732   -1.97111  0.04899
df_in[, -1]Lag_3        -0.04217  0.09401   -0.44858  0.65383
Losses of out-of-sample forecasts:  66.5 
20 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.01065  0.00215   -4.95288  0.00000
df_in[, -1]Diff_Index_1      -0.00006  0.00025   -0.24127  0.80940
df_in[, -1]Lag_1              0.18549  0.11294    1.64235  0.10083
df_in[, -1]Lag_2              0.08602  0.09638    0.89243  0.37238
df_in[, -1]Lag_3              0.09716  0.08040    1.20839  0.22718
df_in[, -1]Pos_Val_for_Lag_1 -0.00217  0.00205   -1.06035  0.28924
df_in[, -1]Pos_Val_for_Lag_2  0.00036  0.00153    0.23717  0.81258
df_in[, -1]Pos_Val_for_Lag_3 -0.00120  0.00147   -0.82092  0.41189
Losses of out-of-sample forecasts:  51.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1827557

$rect$left
[1] -14.44

$rect$top
[1] 0.1459559


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.1276802810  0.1094047076  0.0911291341  0.0728535607  0.0545779872  0.0363024138  0.0180268404 -0.0002487331 -0.0185243065

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.338 1.316 1.659 1.325 0.651 0.654 0.640 0.956
VaR Breaks (%) 0.236 0.236 0.316 0.256 0.076 0.076 0.064 0.160
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 4 NA
MV CAViaR + AR 4 4
MV CAViaR + SAV 4 3
MV CAViaR + AS 1 3
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2008_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_10pc_2008_bond_etf.csv", uv_list = var_10pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
1 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.00937   0.00053  -17.51544   0.00000
DF1           0.00010   0.00025    0.41006   0.68185
DF2          -0.00046   0.00076   -0.60446   0.54567
DF3           0.00176   0.00082    2.15140   0.03168
DF4           0.00014   0.00239    0.05819   0.95361
MSE of out-of-sample forecasts:  0.0008058132 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.00952   0.00050  -18.95295   0.00000
df_in[, -1]Diff_Index_1  -0.00033   0.00021   -1.54679   0.12223
df_in[, -1]Lag_1          0.07665   0.05572    1.37565   0.16924
df_in[, -1]Lag_2          0.14266   0.05558    2.56656   0.01042
df_in[, -1]Lag_3          0.08263   0.05404    1.52909   0.12656
Losses of out-of-sample forecasts:  51 
1 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00728  0.00087   -8.38924  0.00000
df_in[, -1]Diff_Index_1  0.00010  0.00023    0.43859  0.66105
df_in[, -1]Diff_Index_2 -0.00057  0.00074   -0.77204  0.44028
df_in[, -1]Diff_Index_3  0.00193  0.00075    2.56087  0.01059
df_in[, -1]Lag_1        -0.14564  0.13272   -1.09729  0.27278
df_in[, -1]Lag_2        -0.11344  0.08580   -1.32219  0.18641
df_in[, -1]Lag_3        -0.10865  0.04368   -2.48761  0.01302
Losses of out-of-sample forecasts:  66 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.00784  0.00154   -5.10452  0.00000
df_in[, -1]Diff_Index_1       0.00008  0.00026    0.31364  0.75386
df_in[, -1]Diff_Index_2      -0.00050  0.00086   -0.58036  0.56181
df_in[, -1]Diff_Index_3       0.00146  0.00096    1.51481  0.13014
df_in[, -1]Diff_Index_4       0.00086  0.00245    0.35068  0.72590
df_in[, -1]Lag_1              0.15857  0.09554    1.65970  0.09729
df_in[, -1]Lag_2              0.06124  0.07715    0.79370  0.42756
df_in[, -1]Lag_3              0.15829  0.09257    1.70999  0.08758
df_in[, -1]Lag_4              0.08258  0.09123    0.90516  0.36560
df_in[, -1]Pos_Val_for_Lag_1 -0.00258  0.00144   -1.79340  0.07321
df_in[, -1]Pos_Val_for_Lag_2  0.00100  0.00137    0.72514  0.46854
df_in[, -1]Pos_Val_for_Lag_3 -0.00119  0.00144   -0.82779  0.40799
df_in[, -1]Pos_Val_for_Lag_4  0.00005  0.00144    0.03500  0.97208
Losses of out-of-sample forecasts:  52 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1684943

$rect$left
[1] -14.44

$rect$top
[1] 0.145146


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.128296536  0.111447107  0.094597678  0.077748248  0.060898819  0.044049390  0.027199961  0.010350532 -0.006498897

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.641 1.575 1.840 1.586 1.077 1.066 1.068 1.366
VaR Breaks (%) 0.308 0.304 0.364 0.308 0.144 0.156 0.140 0.224
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 4 NA
MV CAViaR + AR 1 3
MV CAViaR + SAV 3 3
MV CAViaR + AS 4 4
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

All ETFs

# 1%, 5%, 10% VaR - 2008 - 5th set of predictors
var_1pc_2008_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_1pc_2008_all_etf.csv", uv_list = var_1pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
Solution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.02641     -0.03639 -0.02513
DF           0.00060      0.00011  0.00085
MSE of out-of-sample forecasts:  0.001250493 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02580     -0.05501 -0.02553
df_in[, -1]Diff_Index_1  0.00079     -0.00067  0.00825
df_in[, -1]Lag_1         0.10853     -0.69738  3.76283
df_in[, -1]Lag_2        -0.06127     -0.28049  0.42141
Losses of out-of-sample forecasts:  24.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd  upper bd 
(Intercept)              -0.02343     -0.03904  -0.01566
df_in[, -1]Diff_Index_1   0.00032     -0.00597   0.01568
df_in[, -1]Diff_Index_2   0.00362     -0.00430   0.00514
df_in[, -1]Lag_1         -0.11923    -10.41239   0.53800
df_in[, -1]Lag_2          0.33710     -8.16184   0.44373
df_in[, -1]Lag_3         -0.18449     -7.87245   0.14537
df_in[, -1]Lag_4         -0.64287     -7.31829   0.32125
df_in[, -1]Lag_5          0.46121    -14.10330   1.03096
df_in[, -1]Lag_6          0.13540     -8.49876   0.51562
Losses of out-of-sample forecasts:  51.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.04080     -0.05209 -0.02085
df_in[, -1]Diff_Index_1      -0.00064     -0.00412  0.01376
df_in[, -1]Lag_1             -1.07533     -2.33292  5.14731
df_in[, -1]Lag_2              0.02453     -0.96560  0.86402
df_in[, -1]Pos_Val_for_Lag_1  0.01990     -0.02048  0.03584
df_in[, -1]Pos_Val_for_Lag_2  0.00214     -0.01104  0.02159
Losses of out-of-sample forecasts:  23.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.2292304

$rect$left
[1] -14.44

$rect$top
[1] 0.1485951


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.12567205  0.10274901  0.07982597  0.05690294  0.03397990  0.01105686 -0.01186618 -0.03478922 -0.05771226

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.736 0.737 1.733 0.863 0.208 0.213 0.219 0.355
VaR Breaks (%) 0.104 0.108 0.216 0.104 0.028 0.028 0.028 0.060
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 2
MV CAViaR + SAV 2 6
MV CAViaR + AS 1 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2008_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_5pc_2008_all_etf.csv", uv_list = var_5pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.01807     -0.02060 -0.01392
DF           0.00062     -0.00042  0.00100
MSE of out-of-sample forecasts:  0.0009211287 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01626     -0.01994 -0.01401
df_in[, -1]Diff_Index_1  0.00033     -0.00267  0.00387
df_in[, -1]Lag_1         0.06493     -1.24694  1.88874
df_in[, -1]Lag_2         0.24383     -0.24797  0.31913
Losses of out-of-sample forecasts:  39.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.00857     -0.01949 -0.00671
df_in[, -1]Diff_Index_1 -0.00013     -0.00053  0.00123
df_in[, -1]Lag_1        -0.23801     -0.92681  0.38281
df_in[, -1]Lag_2         0.10339     -0.49538  0.18709
df_in[, -1]Lag_3        -0.09694     -0.52780  0.10625
df_in[, -1]Lag_4        -0.86018     -1.08536 -0.10740
Losses of out-of-sample forecasts:  87.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01831     -0.03247 -0.01096
df_in[, -1]Diff_Index_1       0.00226     -0.00231  0.00354
df_in[, -1]Diff_Index_2       0.00027     -0.00269  0.00170
df_in[, -1]Diff_Index_3      -0.00196     -0.00490  0.00105
df_in[, -1]Diff_Index_4       0.00025     -0.00323  0.00217
df_in[, -1]Diff_Index_5       0.00653      0.00061  0.00736
df_in[, -1]Diff_Index_6      -0.00090     -0.00318  0.00069
df_in[, -1]Diff_Index_7       0.00135     -0.00062  0.00651
df_in[, -1]Diff_Index_8      -0.00267     -0.00343  0.00255
df_in[, -1]Diff_Index_9      -0.00216     -0.00760  0.00037
df_in[, -1]Lag_1              0.62241     -1.59231  1.50053
df_in[, -1]Pos_Val_for_Lag_1  0.00339     -0.00789  0.01728
Losses of out-of-sample forecasts:  42.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1957809

$rect$left
[1] -14.44

$rect$top
[1] 0.1466955


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.127117447  0.107539357  0.087961268  0.068383178  0.048805088  0.029226998  0.009648908 -0.009929182 -0.029507272

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.148 1.236 2.391 1.371 0.651 0.654 0.640 0.956
VaR Breaks (%) 0.168 0.208 0.400 0.220 0.076 0.076 0.064 0.160
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 2
MV CAViaR + SAV 1 4
MV CAViaR + AS 9 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2008_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2004-01-01", end_date = "2008-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_10pc_2008_all_etf.csv", uv_list = var_10pc_2008_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.01079     -0.01368 -0.00907
DF           0.00011     -0.00068  0.00066
MSE of out-of-sample forecasts:  0.0007489458 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01078     -0.01347 -0.00926
df_in[, -1]Diff_Index_1  0.00110     -0.00210  0.00241
df_in[, -1]Lag_1         0.46659     -0.92299  1.22185
Losses of out-of-sample forecasts:  47 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.00815     -0.01316 -0.00416
df_in[, -1]Diff_Index_1  0.00038     -0.00074  0.00140
df_in[, -1]Lag_1        -0.25301     -1.03749  0.33921
df_in[, -1]Lag_2        -0.20687     -0.68343 -0.11976
Losses of out-of-sample forecasts:  61 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.00881     -0.01627 -0.00702
df_in[, -1]Diff_Index_1       0.00142     -0.00194  0.00242
df_in[, -1]Lag_1              0.81792     -0.88871  1.14522
df_in[, -1]Pos_Val_for_Lag_1 -0.00344     -0.00816  0.00614
Losses of out-of-sample forecasts:  48 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.1684943

$rect$left
[1] -14.44

$rect$top
[1] 0.145146


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.128296536  0.111447107  0.094597678  0.077748248  0.060898819  0.044049390  0.027199961  0.010350532 -0.006498897

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 1.521 1.549 1.797 1.644 1.077 1.066 1.068 1.366
VaR Breaks (%) 0.284 0.288 0.344 0.292 0.144 0.156 0.140 0.224
Note:
Calculated using 250 trading days from 2008-01-04 to 2008-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 1
MV CAViaR + SAV 1 2
MV CAViaR + AS 1 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

2010 Ending

U.S. ETFs

# 1%, 5%, 10% VaR - 2010 - 1st set of predictors
var_1pc_2010_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_1pc_2010_us_etf.csv", uv_list = var_1pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) -0.05069  0.00848   -5.97750  0.00000
DF          -0.00126  0.00303   -0.41481  0.67837
MSE of out-of-sample forecasts:  0.002742219 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.04764     -0.05590 -0.04541
df_in[, -1]Diff_Index_1  0.00251      0.00243  0.00358
df_in[, -1]Diff_Index_2  0.00516      0.00276  0.00671
df_in[, -1]Lag_1         0.59823      0.47079  0.74585
df_in[, -1]Lag_2        -0.27958     -0.38200 -0.27542
df_in[, -1]Lag_3         0.38143      0.19307  0.42690
df_in[, -1]Lag_4        -0.05056     -0.07700  0.01651
df_in[, -1]Lag_5         0.13590      0.13259  0.18778
df_in[, -1]Lag_6         0.03762      0.03268  0.06609
df_in[, -1]Lag_7         0.09959      0.07226  0.10023
Losses of out-of-sample forecasts:  2.5 
58 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.03269  0.00690   -4.73551  0.00000
df_in[, -1]Diff_Index_1 -0.00033  0.00398   -0.08289  0.93396
df_in[, -1]Diff_Index_2  0.00584  0.00730    0.79925  0.42434
df_in[, -1]Diff_Index_3  0.00096  0.00716    0.13348  0.89384
df_in[, -1]Diff_Index_4 -0.00164  0.00895   -0.18342  0.85451
df_in[, -1]Diff_Index_5 -0.00429  0.01064   -0.40272  0.68724
df_in[, -1]Diff_Index_6 -0.00435  0.01278   -0.34009  0.73386
df_in[, -1]Diff_Index_7  0.00613  0.00985    0.62290  0.53350
df_in[, -1]Lag_1        -1.09820  0.98413   -1.11591  0.26473
Losses of out-of-sample forecasts:  8.5 
6 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.03903  0.01148   -3.40091  0.00070
df_in[, -1]Diff_Index_1       0.00418  0.01210    0.34512  0.73008
df_in[, -1]Diff_Index_2       0.00520  0.00575    0.90451  0.36594
df_in[, -1]Diff_Index_3       0.00192  0.00675    0.28394  0.77652
df_in[, -1]Diff_Index_4      -0.00272  0.00639   -0.42622  0.67004
df_in[, -1]Lag_1              1.06900  1.70442    0.62720  0.53067
df_in[, -1]Pos_Val_for_Lag_1 -0.02061  0.01721   -1.19738  0.23144
Losses of out-of-sample forecasts:  2.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.08678328

$rect$left
[1] -14.36

$rect$top
[1] 0.04802718


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.039348853  0.030670525  0.021992198  0.013313870  0.004635542 -0.004042786 -0.012721113 -0.021399441 -0.030077769

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.128 0.119 0.155 0.128 0.079 0.08 0.086 0.191
VaR Breaks (%) 0.000 0.000 0.044 0.000 0.020 0.02 0.016 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 2 7
MV CAViaR + SAV 7 1
MV CAViaR + AS 4 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2010_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_5pc_2010_us_etf.csv", uv_list = var_5pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.02483   0.00189  -13.13135   0.00000
DF           -0.00008   0.00060   -0.13739   0.89075
MSE of out-of-sample forecasts:  0.000767936 
2 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.02490   0.00207  -12.03235   0.00000
df_in[, -1]Diff_Index_1   0.00076   0.00167    0.45340   0.65036
df_in[, -1]Lag_1          0.14843   0.23682    0.62674   0.53097
Losses of out-of-sample forecasts:  5.5 
8 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01794  0.00187   -9.58344  0.00000
df_in[, -1]Diff_Index_1 -0.00068  0.00045   -1.52477  0.12763
df_in[, -1]Diff_Index_2  0.00056  0.00211    0.26645  0.78995
df_in[, -1]Diff_Index_3  0.00055  0.00167    0.33046  0.74112
df_in[, -1]Lag_1        -0.78924  0.09519   -8.29128  0.00000
Losses of out-of-sample forecasts:  8.5 
Solution may be nonunique2 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.02448  0.00283   -8.64321  0.00000
df_in[, -1]Diff_Index_1       0.00132  0.00364    0.36208  0.71737
df_in[, -1]Lag_1              0.25245  0.55213    0.45722  0.64761
df_in[, -1]Pos_Val_for_Lag_1 -0.00244  0.00514   -0.47441  0.63531
Losses of out-of-sample forecasts:  5.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.06319868

$rect$left
[1] -14.36

$rect$top
[1] 0.04668784


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.040367973  0.034048105  0.027728237  0.021408369  0.015088501  0.008768632  0.002448764 -0.003871104 -0.010190972

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.369 0.369 0.468 0.379 0.336 0.336 0.343 0.492
VaR Breaks (%) 0.028 0.028 0.084 0.028 0.052 0.052 0.048 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 1
MV CAViaR + SAV 3 1
MV CAViaR + AS 1 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2010_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_10pc_2010_us_etf.csv", uv_list = var_10pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01542   0.00128  -12.04896   0.00000
DF            0.00028   0.00045    0.62063   0.53498
MSE of out-of-sample forecasts:  0.0003810862 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01595   0.00123  -13.01513   0.00000
df_in[, -1]Diff_Index_1  -0.00116   0.00249   -0.46531   0.64181
df_in[, -1]Lag_1         -0.21845   0.38833   -0.56253   0.57388
Losses of out-of-sample forecasts:  7 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01119  0.00137   -8.14848  0.00000
df_in[, -1]Diff_Index_1  0.00053  0.00101    0.52610  0.59894
df_in[, -1]Diff_Index_2  0.00129  0.00161    0.79910  0.42442
df_in[, -1]Diff_Index_3  0.00136  0.00141    0.96525  0.33466
df_in[, -1]Lag_1        -0.53825  0.22712   -2.36992  0.01798
Losses of out-of-sample forecasts:  8 
3 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.02181  0.00249   -8.75462  0.00000
df_in[, -1]Diff_Index_1      -0.00267  0.00197   -1.35846  0.17462
df_in[, -1]Lag_1             -0.41532  0.31524   -1.31748  0.18798
df_in[, -1]Lag_2             -0.16679  0.05641   -2.95656  0.00318
df_in[, -1]Pos_Val_for_Lag_1  0.00013  0.00283    0.04744  0.96217
df_in[, -1]Pos_Val_for_Lag_2  0.00981  0.00275    3.57238  0.00037
Losses of out-of-sample forecasts:  5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.05746902

$rect$left
[1] -14.36

$rect$top
[1] 0.04636246


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0406155591  0.0348686575  0.0291217558  0.0233748541  0.0176279525  0.0118810508  0.0061341492  0.0003872475
[9] -0.0053596542

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.56 0.561 0.710 0.572 0.547 0.549 0.546 0.690
VaR Breaks (%) 0.08 0.072 0.132 0.080 0.080 0.088 0.084 0.028
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 1
MV CAViaR + SAV 3 1
MV CAViaR + AS 1 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Global ETFs

# 1%, 5%, 10% VaR - 2010 - 2nd set of predictors
var_1pc_2010_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_1pc_2010_glob_etf.csv", uv_list = var_1pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.05286     -0.07001 -0.04794
DF1         -0.00125     -0.00190 -0.00125
DF2          0.00480      0.00364  0.00760
DF3         -0.00085     -0.01391  0.00618
DF4          0.00433      0.00060  0.00612
MSE of out-of-sample forecasts:  0.002959033 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.05447     -0.06710 -0.04722
df_in[, -1]Diff_Index_1 -0.00140     -0.00239  0.00088
df_in[, -1]Diff_Index_2  0.00256     -0.00428  0.00664
df_in[, -1]Lag_1        -0.01390     -0.19732  0.31810
df_in[, -1]Lag_2        -0.22744     -0.45086 -0.11295
df_in[, -1]Lag_3         0.49437     -0.03979  0.59131
df_in[, -1]Lag_4         0.00847      0.00847  0.09727
df_in[, -1]Lag_5         0.06554      0.03309  0.08857
df_in[, -1]Lag_6         0.00485      0.00209  0.06426
df_in[, -1]Lag_7         0.07786      0.01288  0.19270
Losses of out-of-sample forecasts:  2.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.04247     -0.06415 -0.03518
df_in[, -1]Diff_Index_1 -0.00171     -0.00938  0.00868
df_in[, -1]Diff_Index_2  0.00128      0.00023  0.00388
df_in[, -1]Diff_Index_3 -0.00531     -0.00685  0.01006
df_in[, -1]Diff_Index_4 -0.00635     -0.00920 -0.00445
df_in[, -1]Lag_1        -0.54829     -5.70268 -0.42648
Losses of out-of-sample forecasts:  1.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.05536     -0.08457 -0.03478
df_in[, -1]Diff_Index_1      -0.00166     -0.00474  0.00098
df_in[, -1]Lag_1              0.03130     -0.61376  0.73935
df_in[, -1]Lag_2             -0.29801     -0.63397 -0.15334
df_in[, -1]Lag_3              0.80544      0.46288  0.92209
df_in[, -1]Lag_4             -0.02060     -0.36130  0.12403
df_in[, -1]Lag_5              0.07338     -0.18281  0.24885
df_in[, -1]Lag_6              0.04709     -0.11248  0.11269
df_in[, -1]Lag_7              0.10183      0.03213  0.21207
df_in[, -1]Pos_Val_for_Lag_1 -0.01036     -0.04130  0.02213
df_in[, -1]Pos_Val_for_Lag_2  0.00891     -0.01693  0.03435
df_in[, -1]Pos_Val_for_Lag_3 -0.03001     -0.04015  0.00244
df_in[, -1]Pos_Val_for_Lag_4  0.01495     -0.01268  0.06087
df_in[, -1]Pos_Val_for_Lag_5  0.00953     -0.02858  0.04125
df_in[, -1]Pos_Val_for_Lag_6  0.01060     -0.00722  0.02952
df_in[, -1]Pos_Val_for_Lag_7  0.00452     -0.03220  0.01996
Losses of out-of-sample forecasts:  2.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.09518427

$rect$left
[1] -14.36

$rect$top
[1] 0.04850426


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0389858360  0.0294674094  0.0199489827  0.0104305560  0.0009121293 -0.0086062973 -0.0181247240 -0.0276431507
[9] -0.0371615774

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.133 0.136 0.110 0.127 0.079 0.08 0.086 0.191
VaR Breaks (%) 0.000 0.000 0.004 0.000 0.020 0.02 0.016 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 4 NA
MV CAViaR + AR 2 7
MV CAViaR + SAV 4 1
MV CAViaR + AS 1 7
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2010_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_5pc_2010_glob_etf.csv", uv_list = var_5pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.02796     -0.03169 -0.02480
DF          -0.00024     -0.00099  0.00034
MSE of out-of-sample forecasts:  0.0009362769 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02706     -0.03255 -0.02486
df_in[, -1]Diff_Index_1  0.00069     -0.00307  0.00185
df_in[, -1]Lag_1         0.18185     -0.45345  0.34369
df_in[, -1]Lag_2         0.02192     -0.22185  0.21188
df_in[, -1]Lag_3         0.24361      0.08998  0.34119
df_in[, -1]Lag_4         0.17436      0.05112  0.19715
Losses of out-of-sample forecasts:  6.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01910     -0.02360 -0.01604
df_in[, -1]Diff_Index_1 -0.00069     -0.00119  0.00093
df_in[, -1]Diff_Index_2  0.00043     -0.00219  0.00551
df_in[, -1]Lag_1        -0.76303     -1.14292 -0.41166
Losses of out-of-sample forecasts:  4.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.02518     -0.03696 -0.02165
df_in[, -1]Diff_Index_1      -0.00003     -0.00204  0.00137
df_in[, -1]Lag_1              0.11369     -0.21219  0.28839
df_in[, -1]Pos_Val_for_Lag_1 -0.00572     -0.00823  0.00603
Losses of out-of-sample forecasts:  6.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.06289976

$rect$left
[1] -14.36

$rect$top
[1] 0.04667087


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.040380890  0.034090914  0.027800939  0.021510963  0.015220987  0.008931011  0.002641035 -0.003648940 -0.009938916

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.386 0.371 0.449 0.401 0.336 0.336 0.343 0.492
VaR Breaks (%) 0.024 0.024 0.068 0.024 0.052 0.052 0.048 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 4
MV CAViaR + SAV 2 1
MV CAViaR + AS 1 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2010_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_10pc_2010_glob_etf.csv", uv_list = var_10pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.01964     -0.02186 -0.01596
DF1          0.00002     -0.00046  0.00089
DF2         -0.00108     -0.00247  0.00124
MSE of out-of-sample forecasts:  0.0005350216 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01967     -0.02161 -0.01593
df_in[, -1]Diff_Index_1  0.00004     -0.00229  0.00211
df_in[, -1]Diff_Index_2 -0.00107     -0.00246  0.00112
df_in[, -1]Lag_1         0.00419     -0.23943  0.36118
Losses of out-of-sample forecasts:  15 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01275     -0.01606 -0.01190
df_in[, -1]Diff_Index_1 -0.00028     -0.00180  0.00117
df_in[, -1]Diff_Index_2  0.00218     -0.00125  0.00471
df_in[, -1]Diff_Index_3 -0.00156     -0.00322  0.00092
df_in[, -1]Diff_Index_4  0.00276     -0.00194  0.00776
df_in[, -1]Diff_Index_5 -0.00142     -0.00478  0.00360
df_in[, -1]Lag_1        -0.57997     -0.88652 -0.29000
Losses of out-of-sample forecasts:  7 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.02372     -0.02993 -0.01899
df_in[, -1]Diff_Index_1      -0.00047     -0.00201  0.00169
df_in[, -1]Lag_1             -0.05125     -0.25888  0.23928
df_in[, -1]Lag_2             -0.17269     -0.29737 -0.08521
df_in[, -1]Pos_Val_for_Lag_1 -0.00086     -0.00689  0.00567
df_in[, -1]Pos_Val_for_Lag_2  0.01087      0.00459  0.01670
Losses of out-of-sample forecasts:  8 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.05746902

$rect$left
[1] -14.36

$rect$top
[1] 0.04636246


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0406155591  0.0348686575  0.0291217558  0.0233748541  0.0176279525  0.0118810508  0.0061341492  0.0003872475
[9] -0.0053596542

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.606 0.606 0.664 0.590 0.547 0.549 0.546 0.690
VaR Breaks (%) 0.040 0.040 0.128 0.068 0.080 0.088 0.084 0.028
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 2 NA
MV CAViaR + AR 2 1
MV CAViaR + SAV 5 1
MV CAViaR + AS 1 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Commodity ETFs

Bond ETFs

# iShares 1-3 Year Treasury Bond Fund (SHY)
# iShares 7-10 Year Treasury Bond Fund (IEF)
# iShares 20+ Year Treasury Bond Fund (TLT)
# iShares iBoxx $ Investment Grade Corporate Bond ETF (LQD)
# 1%, 5%, 10% VaR - 2010 - 4th set of predictors
var_1pc_2010_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_1pc_2010_bond_etf.csv", uv_list = var_1pc_2010_usetf[[1]])
Solution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) -0.05195  0.00802   -6.48165  0.00000
DF           0.00020  0.00489    0.04113  0.96720
MSE of out-of-sample forecasts:  0.002877573 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.05197     -0.05677 -0.04493
df_in[, -1]Diff_Index_1  0.00125     -0.00233  0.00196
df_in[, -1]Lag_1         0.11697      0.08030  0.20992
df_in[, -1]Lag_2        -0.18361     -0.20606 -0.17822
df_in[, -1]Lag_3         0.54128      0.12616  0.54696
df_in[, -1]Lag_4         0.09941      0.09941  0.11540
df_in[, -1]Lag_5         0.09497      0.01307  0.10697
df_in[, -1]Lag_6         0.04201     -0.02229  0.05901
df_in[, -1]Lag_7         0.03888      0.02882  0.16015
Losses of out-of-sample forecasts:  2.5 
7 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.04165  0.01067   -3.90349  0.00010
df_in[, -1]Diff_Index_1 -0.00170  0.00500   -0.34066  0.73343
df_in[, -1]Lag_1        -0.90080  0.26634   -3.38220  0.00075
Losses of out-of-sample forecasts:  1.5 
75 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value     Std. Error t value   Pr(>|t|) 
(Intercept)                   -0.04753   0.00382  -12.43027   0.00000
df_in[, -1]Diff_Index_1       -0.00093   0.00134   -0.69273   0.48864
df_in[, -1]Lag_1               0.21261   0.26085    0.81508   0.41522
df_in[, -1]Lag_2              -0.44608   0.12947   -3.44533   0.00059
df_in[, -1]Lag_3               0.68187   0.20773    3.28244   0.00106
df_in[, -1]Pos_Val_for_Lag_1  -0.01171   0.01083   -1.08169   0.27965
df_in[, -1]Pos_Val_for_Lag_2   0.02565   0.00360    7.13436   0.00000
df_in[, -1]Pos_Val_for_Lag_3  -0.01969   0.00487   -4.04675   0.00006
Losses of out-of-sample forecasts:  1.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.09032912

$rect$left
[1] -14.36

$rect$top
[1] 0.04822855


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.039195633  0.030162721  0.021129809  0.012096896  0.003063984 -0.005968928 -0.015001840 -0.024034752 -0.033067665

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.131 0.13 0.129 0.128 0.079 0.08 0.086 0.191
VaR Breaks (%) 0.000 0.00 0.016 0.004 0.020 0.02 0.016 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 7
MV CAViaR + SAV 1 1
MV CAViaR + AS 1 3
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2010_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_5pc_2010_bond_etf.csv", uv_list = var_5pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonunique
2 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.02544   0.00175  -14.52699   0.00000
DF1          -0.00111   0.00108   -1.02326   0.30643
DF2           0.00161   0.00344    0.46847   0.63955
MSE of out-of-sample forecasts:  0.000798382 
2 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.02530   0.00202  -12.53056   0.00000
df_in[, -1]Diff_Index_1  -0.00081   0.00132   -0.61940   0.53579
df_in[, -1]Diff_Index_2   0.00091   0.00347    0.26270   0.79284
df_in[, -1]Lag_1          0.03536   0.14724    0.24018   0.81024
Losses of out-of-sample forecasts:  5.5 
3 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01715   0.00151  -11.34343   0.00000
df_in[, -1]Diff_Index_1   0.00093   0.00076    1.21232   0.22568
df_in[, -1]Diff_Index_2   0.00364   0.00264    1.38116   0.16754
df_in[, -1]Diff_Index_3  -0.00083   0.00142   -0.58423   0.55920
df_in[, -1]Diff_Index_4   0.00859   0.00460    1.86775   0.06209
df_in[, -1]Lag_1         -0.82514   0.13637   -6.05058   0.00000
Losses of out-of-sample forecasts:  13.5 
2 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.02497  0.00390   -6.40279  0.00000
df_in[, -1]Diff_Index_1      -0.00088  0.00125   -0.70790  0.47917
df_in[, -1]Diff_Index_2       0.00075  0.00165    0.45697  0.64779
df_in[, -1]Lag_1              0.05510  0.18855    0.29222  0.77018
df_in[, -1]Pos_Val_for_Lag_1 -0.00160  0.00551   -0.28986  0.77198
Losses of out-of-sample forecasts:  5.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.06066502

$rect$left
[1] -14.36

$rect$top
[1] 0.04654396


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.040477456  0.034410954  0.028344453  0.022277951  0.016211450  0.010144948  0.004078446 -0.001988055 -0.008054557

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.373 0.372 0.494 0.378 0.336 0.336 0.343 0.492
VaR Breaks (%) 0.028 0.028 0.104 0.028 0.052 0.052 0.048 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 2 NA
MV CAViaR + AR 2 1
MV CAViaR + SAV 4 1
MV CAViaR + AS 2 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2010_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_10pc_2010_bond_etf.csv", uv_list = var_10pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01606   0.00124  -12.99847   0.00000
DF           -0.00056   0.00074   -0.76332   0.44545
MSE of out-of-sample forecasts:  0.0004019017 
1 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01568   0.00126  -12.49398   0.00000
df_in[, -1]Diff_Index_1  -0.00051   0.00081   -0.63100   0.52819
df_in[, -1]Diff_Index_2  -0.00083   0.00229   -0.36132   0.71794
df_in[, -1]Lag_1          0.00771   0.08990    0.08578   0.93166
Losses of out-of-sample forecasts:  6 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01190  0.00162   -7.34739  0.00000
df_in[, -1]Diff_Index_1 -0.00020  0.00086   -0.23107  0.81730
df_in[, -1]Lag_1        -0.49086  0.20659   -2.37608  0.01768
Losses of out-of-sample forecasts:  7 
3 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.02195  0.00261   -8.42328  0.00000
df_in[, -1]Diff_Index_1      -0.00046  0.00070   -0.65903  0.51003
df_in[, -1]Lag_1              0.02527  0.08900    0.28396  0.77650
df_in[, -1]Lag_2             -0.15263  0.05938   -2.57042  0.01030
df_in[, -1]Pos_Val_for_Lag_1  0.00011  0.00288    0.03979  0.96827
df_in[, -1]Pos_Val_for_Lag_2  0.00944  0.00285    3.31280  0.00096
Losses of out-of-sample forecasts:  5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.05746902

$rect$left
[1] -14.36

$rect$top
[1] 0.04636246


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0406155591  0.0348686575  0.0291217558  0.0233748541  0.0176279525  0.0118810508  0.0061341492  0.0003872475
[9] -0.0053596542

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.566 0.565 0.659 0.578 0.547 0.549 0.546 0.690
VaR Breaks (%) 0.076 0.076 0.128 0.080 0.080 0.088 0.084 0.028
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 2 1
MV CAViaR + SAV 1 1
MV CAViaR + AS 1 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

All ETFs

# 1%, 5%, 10% VaR - 2010 - 5th set of predictors
var_1pc_2010_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_1pc_2010_all_etf.csv", uv_list = var_1pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.05784     -0.07103 -0.05094
DF1         -0.00136     -0.00161 -0.00120
DF2         -0.00178     -0.00311  0.00016
DF3         -0.00242     -0.00262 -0.00018
DF4          0.00625      0.00352  0.00837
DF5         -0.00219     -0.00226 -0.00122
DF6          0.00589      0.00417  0.00855
MSE of out-of-sample forecasts:  0.003541309 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.05426     -0.06588 -0.04708
df_in[, -1]Diff_Index_1 -0.00114     -0.00114 -0.00022
df_in[, -1]Diff_Index_2  0.00092     -0.00384  0.00220
df_in[, -1]Diff_Index_3 -0.00139     -0.00465  0.00584
df_in[, -1]Diff_Index_4 -0.00109     -0.00508  0.00675
df_in[, -1]Lag_1        -0.08900     -0.08900  0.21932
df_in[, -1]Lag_2        -0.15431     -0.47699 -0.12584
df_in[, -1]Lag_3         0.53270     -0.01174  0.54993
df_in[, -1]Lag_4         0.13077      0.02767  0.13670
df_in[, -1]Lag_5         0.07243     -0.00872  0.07243
df_in[, -1]Lag_6         0.04835     -0.11943  0.04835
df_in[, -1]Lag_7         0.04003      0.04003  0.15861
Losses of out-of-sample forecasts:  2.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.04511     -0.06763 -0.03037
df_in[, -1]Diff_Index_1 -0.00064     -0.00792  0.01055
df_in[, -1]Diff_Index_2 -0.00295     -0.00396  0.00001
df_in[, -1]Lag_1        -0.45649     -5.64517 -0.33245
Losses of out-of-sample forecasts:  2.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.05697     -0.10178 -0.02674
df_in[, -1]Diff_Index_1      -0.00164     -0.00483 -0.00028
df_in[, -1]Diff_Index_2       0.00073     -0.00141  0.00317
df_in[, -1]Diff_Index_3      -0.00089     -0.00258  0.00213
df_in[, -1]Lag_1             -0.03395     -0.76571  1.08170
df_in[, -1]Lag_2             -0.20551     -0.67783 -0.12566
df_in[, -1]Lag_3              0.76259      0.10750  0.88819
df_in[, -1]Lag_4             -0.00947     -0.39191  0.04658
df_in[, -1]Lag_5              0.03314     -0.23763  0.24206
df_in[, -1]Lag_6              0.06632     -0.14997  0.11765
df_in[, -1]Lag_7              0.03492      0.00193  0.19301
df_in[, -1]Pos_Val_for_Lag_1 -0.01147     -0.05985  0.03168
df_in[, -1]Pos_Val_for_Lag_2  0.00627     -0.03697  0.03515
df_in[, -1]Pos_Val_for_Lag_3 -0.02644     -0.04345 -0.00388
df_in[, -1]Pos_Val_for_Lag_4  0.01907     -0.01083  0.05637
df_in[, -1]Pos_Val_for_Lag_5  0.01081     -0.02493  0.06068
df_in[, -1]Pos_Val_for_Lag_6  0.00689     -0.01308  0.03292
df_in[, -1]Pos_Val_for_Lag_7  0.00535     -0.04293  0.02020
Losses of out-of-sample forecasts:  2.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.09469975

$rect$left
[1] -14.36

$rect$top
[1] 0.04847675


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.039006773  0.029536798  0.020066824  0.010596849  0.001126875 -0.008343100 -0.017813074 -0.027283049 -0.036753023

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.146 0.136 0.114 0.128 0.079 0.08 0.086 0.191
VaR Breaks (%) 0.000 0.000 0.000 0.000 0.020 0.02 0.016 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 6 NA
MV CAViaR + AR 4 7
MV CAViaR + SAV 2 1
MV CAViaR + AS 3 7
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2010_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_5pc_2010_all_etf.csv", uv_list = var_5pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.02855     -0.03166 -0.02469
DF1         -0.00008     -0.00070  0.00063
DF2         -0.00160     -0.00250  0.00116
DF3          0.00194     -0.00111  0.00309
DF4         -0.00060     -0.00232  0.00192
MSE of out-of-sample forecasts:  0.0009724848 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02853     -0.03135 -0.02437
df_in[, -1]Diff_Index_1 -0.00022     -0.00317  0.00283
df_in[, -1]Diff_Index_2 -0.00159     -0.00264  0.00109
df_in[, -1]Diff_Index_3  0.00202     -0.00071  0.00395
df_in[, -1]Diff_Index_4 -0.00063     -0.00282  0.00201
df_in[, -1]Lag_1        -0.02465     -0.59619  0.36972
Losses of out-of-sample forecasts:  6.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01951     -0.02348 -0.01630
df_in[, -1]Diff_Index_1 -0.00063     -0.00135  0.00051
df_in[, -1]Diff_Index_2 -0.00047     -0.00291  0.00242
df_in[, -1]Diff_Index_3  0.00024     -0.00297  0.00343
df_in[, -1]Diff_Index_4 -0.00094     -0.00183  0.00137
df_in[, -1]Lag_1        -0.72001     -1.10285 -0.37564
Losses of out-of-sample forecasts:  4.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.02596     -0.03459 -0.02259
df_in[, -1]Diff_Index_1      -0.00089     -0.00378  0.00291
df_in[, -1]Diff_Index_2      -0.00163     -0.00228  0.00160
df_in[, -1]Diff_Index_3       0.00183     -0.00057  0.00397
df_in[, -1]Diff_Index_4      -0.00028     -0.00271  0.00188
df_in[, -1]Lag_1             -0.10481     -0.35126  0.39877
df_in[, -1]Pos_Val_for_Lag_1 -0.00401     -0.01390  0.00494
Losses of out-of-sample forecasts:  5.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.06122859

$rect$left
[1] -14.36

$rect$top
[1] 0.04657596


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.040453103  0.034330245  0.028207386  0.022084527  0.015961668  0.009838810  0.003715951 -0.002406908 -0.008529767

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.394 0.394 0.436 0.397 0.336 0.336 0.343 0.492
VaR Breaks (%) 0.024 0.024 0.068 0.028 0.052 0.052 0.048 0.000
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 4 NA
MV CAViaR + AR 4 1
MV CAViaR + SAV 4 1
MV CAViaR + AS 4 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2010_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2006-01-01", end_date = "2010-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_10pc_2010_all_etf.csv", uv_list = var_10pc_2010_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            coefficients lower bd upper bd
(Intercept) -0.01903     -0.02188 -0.01596
DF          -0.00003     -0.00030  0.00056
MSE of out-of-sample forecasts:  0.0005082299 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01874     -0.02188 -0.01551
df_in[, -1]Diff_Index_1  0.00103     -0.00227  0.00225
df_in[, -1]Lag_1         0.21437     -0.45613  0.46691
Losses of out-of-sample forecasts:  14 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01308     -0.01639 -0.01120
df_in[, -1]Diff_Index_1  0.00002     -0.00143  0.00091
df_in[, -1]Diff_Index_2 -0.00037     -0.00149  0.00078
df_in[, -1]Lag_1        -0.53031     -0.82023 -0.22177
Losses of out-of-sample forecasts:  5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.02338     -0.02809 -0.01802
df_in[, -1]Diff_Index_1      -0.00145     -0.00365  0.00100
df_in[, -1]Diff_Index_2      -0.00072     -0.00133  0.00069
df_in[, -1]Diff_Index_3       0.00130     -0.00006  0.00248
df_in[, -1]Diff_Index_4       0.00020     -0.00057  0.00082
df_in[, -1]Lag_1             -0.31885     -0.76863  0.21304
df_in[, -1]Lag_2             -0.19970     -0.30700 -0.08292
df_in[, -1]Pos_Val_for_Lag_1 -0.00173     -0.00672  0.00455
df_in[, -1]Pos_Val_for_Lag_2  0.01145      0.00430  0.01633
Losses of out-of-sample forecasts:  6 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.05746902

$rect$left
[1] -14.36

$rect$top
[1] 0.04636246


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0406155591  0.0348686575  0.0291217558  0.0233748541  0.0176279525  0.0118810508  0.0061341492  0.0003872475
[9] -0.0053596542

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.595 0.594 0.664 0.596 0.547 0.549 0.546 0.690
VaR Breaks (%) 0.044 0.044 0.120 0.076 0.080 0.088 0.084 0.028
Note:
Calculated using 250 trading days from 2010-01-05 to 2010-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 1
MV CAViaR + SAV 2 1
MV CAViaR + AS 4 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

2014 Ending

U.S. ETFs

# 1%, 5%, 10% VaR - 2014 - 1st set of predictors
var_1pc_2014_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_1pc_2014_us_etf.csv", uv_list = var_1pc_2014_usetf[[1]])
5 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) -0.03246  0.00425   -7.63175  0.00000
DF           0.00056  0.00090    0.62033  0.53518
MSE of out-of-sample forecasts:  0.001142983 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02994     -0.03100 -0.02462
df_in[, -1]Diff_Index_1  0.00030     -0.01996  0.00482
df_in[, -1]Diff_Index_2  0.00421      0.00372  0.00866
df_in[, -1]Diff_Index_3  0.00667     -0.00016  0.01122
df_in[, -1]Diff_Index_4 -0.00078     -0.00371  0.00548
df_in[, -1]Diff_Index_5 -0.00020     -0.00651  0.00295
df_in[, -1]Diff_Index_6 -0.00350     -0.00717  0.00529
df_in[, -1]Diff_Index_7  0.00547     -0.00420  0.00723
df_in[, -1]Diff_Index_8  0.00167     -0.00430  0.00766
df_in[, -1]Lag_1         0.29850     -4.89286  1.42327
df_in[, -1]Lag_2         0.21369      0.10005  0.38361
df_in[, -1]Lag_3        -0.10711     -0.15438  0.00733
df_in[, -1]Lag_4         0.44284      0.34786  0.50345
df_in[, -1]Lag_5        -0.17068     -0.21186 -0.01750
df_in[, -1]Lag_6         0.32408      0.24343  0.35036
df_in[, -1]Lag_7         0.13969     -0.01402  0.23758
df_in[, -1]Lag_8         0.00424     -0.02705  0.11133
df_in[, -1]Lag_9         0.03929     -0.15353  0.10890
Losses of out-of-sample forecasts:  2.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01439     -0.02727 -0.00791
df_in[, -1]Diff_Index_1 -0.00054     -0.00266  0.00157
df_in[, -1]Diff_Index_2  0.00312     -0.00112  0.00418
df_in[, -1]Lag_1        -0.13759     -1.14083  0.56051
df_in[, -1]Lag_2        -0.81610     -1.61961 -0.15793
df_in[, -1]Lag_3        -0.08491     -1.03143  0.34715
df_in[, -1]Lag_4        -0.18616     -1.11331  0.18774
df_in[, -1]Lag_5        -0.38375     -0.93706 -0.10772
Losses of out-of-sample forecasts:  15.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.04206     -0.05979 -0.02170
df_in[, -1]Diff_Index_1      -0.00398     -0.01593  0.00988
df_in[, -1]Diff_Index_2       0.00556      0.00138  0.00831
df_in[, -1]Diff_Index_3       0.00426     -0.00818  0.01250
df_in[, -1]Diff_Index_4      -0.00479     -0.00931  0.00350
df_in[, -1]Diff_Index_5      -0.00327     -0.00578 -0.00069
df_in[, -1]Diff_Index_6      -0.00441     -0.00444  0.00285
df_in[, -1]Diff_Index_7       0.00377     -0.00996  0.01039
df_in[, -1]Diff_Index_8       0.00303     -0.01235  0.01037
df_in[, -1]Diff_Index_9      -0.00661     -0.00981  0.00685
df_in[, -1]Lag_1             -0.82953     -3.57357  2.64047
df_in[, -1]Lag_2              0.27071     -0.05076  0.36580
df_in[, -1]Lag_3             -0.01170     -0.24900  0.13064
df_in[, -1]Lag_4              0.15652     -0.17857  0.47104
df_in[, -1]Lag_5             -0.11342     -0.46581 -0.00751
df_in[, -1]Lag_6              0.06318     -0.35257  0.37918
df_in[, -1]Lag_7             -0.16892     -0.51947  0.07881
df_in[, -1]Lag_8             -0.09593     -0.24022 -0.06324
df_in[, -1]Lag_9             -0.34877     -0.43376  0.05428
df_in[, -1]Pos_Val_for_Lag_1  0.00017     -0.00463  0.01009
df_in[, -1]Pos_Val_for_Lag_2 -0.00355     -0.01257  0.00881
df_in[, -1]Pos_Val_for_Lag_3 -0.00051     -0.00550  0.00925
df_in[, -1]Pos_Val_for_Lag_4  0.00796     -0.00756  0.01475
df_in[, -1]Pos_Val_for_Lag_5 -0.00077     -0.00322  0.01045
df_in[, -1]Pos_Val_for_Lag_6  0.00336     -0.00961  0.01739
df_in[, -1]Pos_Val_for_Lag_7  0.00564     -0.00368  0.02060
df_in[, -1]Pos_Val_for_Lag_8  0.00726      0.00262  0.01639
df_in[, -1]Pos_Val_for_Lag_9  0.00797      0.00362  0.01759
Losses of out-of-sample forecasts:  1.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.06318821

$rect$left
[1] -14.44

$rect$top
[1] 0.02801616


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.021697343  0.015378522  0.009059702  0.002740881 -0.003577940 -0.009896761 -0.016215582 -0.022534403 -0.028853223

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.083 0.075 0.173 0.071 0.061 0.057 0.063 0.061
VaR Breaks (%) 0.000 0.000 0.072 0.004 0.008 0.004 0.012 0.028
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 8 9
MV CAViaR + SAV 2 5
MV CAViaR + AS 9 9
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2014_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_5pc_2014_us_etf.csv", uv_list = var_5pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01701   0.00134  -12.73734   0.00000
DF           -0.00056   0.00041   -1.37097   0.17069
MSE of out-of-sample forecasts:  0.000359756 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01683   0.00163  -10.33069   0.00000
df_in[, -1]Diff_Index_1  -0.00167   0.00449   -0.37235   0.70971
df_in[, -1]Lag_1         -0.28759   1.14777   -0.25057   0.80220
Losses of out-of-sample forecasts:  5.5 
1 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01416  0.00144   -9.81617  0.00000
df_in[, -1]Diff_Index_1 -0.00069  0.00025   -2.81554  0.00497
df_in[, -1]Lag_1        -0.39879  0.08632   -4.62004  0.00000
Losses of out-of-sample forecasts:  1.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.02029  0.00230   -8.81284  0.00000
df_in[, -1]Diff_Index_1      -0.00371  0.00364   -1.01780  0.30902
df_in[, -1]Lag_1             -1.05217  0.93238   -1.12848  0.25939
df_in[, -1]Pos_Val_for_Lag_1  0.00699  0.00296    2.36147  0.01839
Losses of out-of-sample forecasts:  4.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.0391762

$rect$left
[1] -14.44

$rect$top
[1] 0.02665255


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.0227349323  0.0188173126  0.0148996929  0.0109820733  0.0070644536  0.0031468339 -0.0007707857 -0.0046884054
[9] -0.0086060251

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.242 0.241 0.229 0.238 0.226 0.218 0.225 0.240
VaR Breaks (%) 0.024 0.028 0.044 0.032 0.052 0.048 0.052 0.056
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 1
MV CAViaR + SAV 1 1
MV CAViaR + AS 1 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2014_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_10pc_2014_us_etf.csv", uv_list = var_10pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01181   0.00073  -16.07697   0.00000
DF1          -0.00044   0.00025   -1.78310   0.07487
DF2           0.00157   0.00084    1.86553   0.06240
DF3           0.00077   0.00125    0.61663   0.53762
DF4          -0.00431   0.00151   -2.85778   0.00435
DF5           0.00034   0.00161    0.20821   0.83511
DF6          -0.00081   0.00173   -0.46586   0.64142
MSE of out-of-sample forecasts:  0.0002154104 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01179     -0.01356 -0.01058
df_in[, -1]Diff_Index_1 -0.00057     -0.00887  0.00747
df_in[, -1]Diff_Index_2  0.00102     -0.00032  0.00300
df_in[, -1]Diff_Index_3 -0.00059     -0.00213  0.00112
df_in[, -1]Diff_Index_4 -0.00366     -0.00534 -0.00109
df_in[, -1]Diff_Index_5  0.00180     -0.00126  0.00368
df_in[, -1]Diff_Index_6 -0.00011     -0.00343  0.00314
df_in[, -1]Diff_Index_7  0.00231     -0.00222  0.00649
df_in[, -1]Lag_1        -0.02818     -2.23664  1.95599
df_in[, -1]Lag_2         0.16345      0.06711  0.31314
df_in[, -1]Lag_3         0.02902     -0.03694  0.10026
df_in[, -1]Lag_4         0.21784      0.11288  0.39015
df_in[, -1]Lag_5        -0.03551     -0.08387  0.12708
df_in[, -1]Lag_6         0.09138      0.03826  0.19337
df_in[, -1]Lag_7         0.10090      0.04659  0.18086
df_in[, -1]Lag_8         0.03492     -0.07822  0.19016
df_in[, -1]Lag_9         0.00586     -0.10994  0.09442
df_in[, -1]Lag_10        0.17849      0.06025  0.25322
Losses of out-of-sample forecasts:  11 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01022   0.00090  -11.40629   0.00000
df_in[, -1]Diff_Index_1  -0.00045   0.00026   -1.75489   0.07958
df_in[, -1]Diff_Index_2   0.00189   0.00072    2.62186   0.00888
df_in[, -1]Diff_Index_3   0.00063   0.00106    0.59899   0.54932
df_in[, -1]Diff_Index_4  -0.00390   0.00135   -2.89689   0.00385
df_in[, -1]Diff_Index_5   0.00020   0.00143    0.14329   0.88609
df_in[, -1]Lag_1         -0.22044   0.09166   -2.40505   0.01635
Losses of out-of-sample forecasts:  5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01648     -0.02267 -0.00969
df_in[, -1]Diff_Index_1      -0.00185     -0.00532  0.00387
df_in[, -1]Lag_1             -0.47294     -1.54593  0.86640
df_in[, -1]Lag_2              0.28821     -0.01015  0.39966
df_in[, -1]Lag_3             -0.08856     -0.22294  0.09097
df_in[, -1]Lag_4              0.19655     -0.03621  0.30220
df_in[, -1]Lag_5             -0.19308     -0.28610  0.11510
df_in[, -1]Lag_6              0.00629     -0.10162  0.16339
df_in[, -1]Lag_7              0.13753     -0.01178  0.30286
df_in[, -1]Lag_8              0.01300     -0.20742  0.12080
df_in[, -1]Pos_Val_for_Lag_1  0.00496      0.00128  0.00760
df_in[, -1]Pos_Val_for_Lag_2 -0.00186     -0.00542  0.00250
df_in[, -1]Pos_Val_for_Lag_3  0.00269     -0.00096  0.00543
df_in[, -1]Pos_Val_for_Lag_4 -0.00068     -0.00424  0.00322
df_in[, -1]Pos_Val_for_Lag_5  0.00291     -0.00120  0.00632
df_in[, -1]Pos_Val_for_Lag_6  0.00129     -0.00204  0.00287
df_in[, -1]Pos_Val_for_Lag_7 -0.00071     -0.00338  0.00302
df_in[, -1]Pos_Val_for_Lag_8  0.00046     -0.00200  0.00479
Losses of out-of-sample forecasts:  6 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.03920233

$rect$left
[1] -14.44

$rect$top
[1] 0.02665404


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.0227338031  0.0188135703  0.0148933375  0.0109731047  0.0070528719  0.0031326391 -0.0007875937 -0.0047078265
[9] -0.0086280593

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.388 0.362 0.368 0.367 0.367 0.359 0.364 0.368
VaR Breaks (%) 0.060 0.056 0.080 0.076 0.116 0.104 0.112 0.132
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 6 NA
MV CAViaR + AR 7 10
MV CAViaR + SAV 5 1
MV CAViaR + AS 1 8
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Global ETFs

# 1%, 5%, 10% VaR - 2014 - 2nd set of predictors
var_1pc_2014_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_1pc_2014_glob_etf.csv", uv_list = var_1pc_2014_usetf[[1]])
28 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) -0.02944  0.00368   -7.99315  0.00000
DF1         -0.00009  0.00103   -0.08685  0.93081
DF2         -0.00067  0.00517   -0.12969  0.89684
DF3          0.00262  0.00564    0.46508  0.64198
DF4          0.00845  0.00593    1.42386  0.15480
DF5          0.00237  0.00728    0.32515  0.74513
DF6         -0.00240  0.00723   -0.33216  0.73983
MSE of out-of-sample forecasts:  0.0009899766 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                         coefficients lower bd upper bd
(Intercept)              -0.02956     -0.03048 -0.02820
df_in[, -1]Diff_Index_1   0.00181     -0.00130  0.00345
df_in[, -1]Diff_Index_2  -0.00353     -0.00380 -0.00303
df_in[, -1]Diff_Index_3  -0.00007     -0.00213  0.00384
df_in[, -1]Diff_Index_4   0.00375      0.00055  0.00928
df_in[, -1]Diff_Index_5  -0.00016     -0.00498  0.00629
df_in[, -1]Diff_Index_6  -0.00834     -0.00880 -0.00358
df_in[, -1]Diff_Index_7   0.00122     -0.00383  0.00796
df_in[, -1]Diff_Index_8  -0.00060     -0.01822  0.00333
df_in[, -1]Diff_Index_9   0.00262     -0.00428  0.01373
df_in[, -1]Diff_Index_10 -0.00547     -0.01461 -0.00045
df_in[, -1]Lag_1          0.52708      0.13620  0.99104
df_in[, -1]Lag_2          0.34179      0.18332  0.34756
df_in[, -1]Lag_3         -0.16156     -0.26362  0.01377
df_in[, -1]Lag_4          0.36718      0.35704  0.48301
df_in[, -1]Lag_5         -0.09350     -0.18164 -0.06059
df_in[, -1]Lag_6          0.20603      0.17023  0.33612
df_in[, -1]Lag_7          0.11576     -0.02961  0.32062
Losses of out-of-sample forecasts:  2.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                         coefficients lower bd upper bd
(Intercept)              -0.01545     -0.02537 -0.00907
df_in[, -1]Diff_Index_1  -0.00011     -0.00072  0.00184
df_in[, -1]Diff_Index_2  -0.00384     -0.00502  0.00029
df_in[, -1]Diff_Index_3  -0.00169     -0.00249  0.00668
df_in[, -1]Diff_Index_4   0.00924     -0.00016  0.01156
df_in[, -1]Diff_Index_5   0.00031     -0.00686  0.00241
df_in[, -1]Diff_Index_6  -0.00099     -0.01173  0.00441
df_in[, -1]Diff_Index_7  -0.00008     -0.00638  0.01677
df_in[, -1]Diff_Index_8  -0.00015     -0.01181  0.00971
df_in[, -1]Diff_Index_9   0.00322     -0.01401  0.01344
df_in[, -1]Diff_Index_10 -0.00187     -0.02177  0.01147
df_in[, -1]Lag_1          0.08495     -1.18253  0.41769
df_in[, -1]Lag_2         -0.70892     -1.38488 -0.37498
df_in[, -1]Lag_3         -0.15164     -1.03614  0.13412
df_in[, -1]Lag_4         -0.28091     -0.97670  0.11864
df_in[, -1]Lag_5         -0.49062     -0.83544 -0.40764
Losses of out-of-sample forecasts:  21.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                              coefficients lower bd upper bd
(Intercept)                   -0.03374     -0.06879 -0.01550
df_in[, -1]Diff_Index_1        0.00065     -0.00422  0.00324
df_in[, -1]Diff_Index_2       -0.00307     -0.00489  0.00063
df_in[, -1]Diff_Index_3        0.00111     -0.00260  0.00413
df_in[, -1]Diff_Index_4        0.00599     -0.00061  0.00857
df_in[, -1]Diff_Index_5       -0.00144     -0.01080  0.00295
df_in[, -1]Diff_Index_6       -0.00441     -0.01222  0.00415
df_in[, -1]Diff_Index_7        0.00160     -0.01090  0.01067
df_in[, -1]Diff_Index_8        0.00421     -0.01843  0.00887
df_in[, -1]Lag_1               0.52641     -1.11075  1.00063
df_in[, -1]Lag_2               0.40691      0.23187  0.53537
df_in[, -1]Lag_3               0.00008     -0.52549  0.42208
df_in[, -1]Lag_4               0.29683     -0.01287  0.55880
df_in[, -1]Lag_5              -0.16182     -0.34696  0.28590
df_in[, -1]Lag_6               0.31689     -0.22120  0.51374
df_in[, -1]Lag_7               0.04489     -0.48240  0.46094
df_in[, -1]Lag_8              -0.02117     -0.24312  0.01245
df_in[, -1]Lag_9              -0.20293     -0.55131  0.22157
df_in[, -1]Lag_10             -0.13625     -0.15397  0.12696
df_in[, -1]Pos_Val_for_Lag_1  -0.00197     -0.00341  0.01574
df_in[, -1]Pos_Val_for_Lag_2  -0.00993     -0.01560  0.01062
df_in[, -1]Pos_Val_for_Lag_3  -0.00015     -0.01333  0.01341
df_in[, -1]Pos_Val_for_Lag_4   0.00229     -0.01436  0.01422
df_in[, -1]Pos_Val_for_Lag_5   0.00171     -0.01093  0.02103
df_in[, -1]Pos_Val_for_Lag_6  -0.00333     -0.01340  0.01637
df_in[, -1]Pos_Val_for_Lag_7   0.00074     -0.01304  0.02391
df_in[, -1]Pos_Val_for_Lag_8   0.00593     -0.00625  0.01822
df_in[, -1]Pos_Val_for_Lag_9   0.00832     -0.00492  0.02351
df_in[, -1]Pos_Val_for_Lag_10  0.00557     -0.01451  0.01148
Losses of out-of-sample forecasts:  2.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.06007008

$rect$left
[1] -14.44

$rect$top
[1] 0.02783909


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.021832082  0.015825074  0.009818066  0.003811058 -0.002195950 -0.008202958 -0.014209965 -0.020216973 -0.026223981

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.076 0.074 0.158 0.071 0.061 0.057 0.063 0.061
VaR Breaks (%) 0.000 0.000 0.096 0.000 0.008 0.004 0.012 0.028
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 6 NA
MV CAViaR + AR 10 7
MV CAViaR + SAV 10 5
MV CAViaR + AS 8 10
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2014_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_5pc_2014_glob_etf.csv", uv_list = var_5pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01677   0.00134  -12.54440   0.00000
DF           -0.00043   0.00043   -1.00162   0.31677
MSE of out-of-sample forecasts:  0.0003518513 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01734   0.00131  -13.24957   0.00000
df_in[, -1]Diff_Index_1   0.00065   0.00166    0.39203   0.69512
df_in[, -1]Lag_1          0.33139   0.45280    0.73187   0.46442
Losses of out-of-sample forecasts:  5.5 
4 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01466  0.00174   -8.42004  0.00000
df_in[, -1]Diff_Index_1 -0.00047  0.00034   -1.39591  0.16305
df_in[, -1]Diff_Index_2 -0.00013  0.00240   -0.05318  0.95760
df_in[, -1]Diff_Index_3  0.00349  0.00273    1.27652  0.20207
df_in[, -1]Diff_Index_4  0.00373  0.00256    1.45527  0.14591
df_in[, -1]Diff_Index_5 -0.00033  0.00316   -0.10496  0.91643
df_in[, -1]Diff_Index_6 -0.00275  0.00307   -0.89738  0.36973
df_in[, -1]Lag_1        -0.38891  0.13461   -2.88920  0.00395
Losses of out-of-sample forecasts:  2.5 
1 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.02036  0.00304   -6.69013  0.00000
df_in[, -1]Diff_Index_1       0.00079  0.00162    0.48654  0.62669
df_in[, -1]Diff_Index_2       0.00179  0.00198    0.90799  0.36410
df_in[, -1]Lag_1              0.10128  0.42841    0.23642  0.81316
df_in[, -1]Lag_2              0.19475  0.16236    1.19949  0.23062
df_in[, -1]Pos_Val_for_Lag_1  0.00824  0.00352    2.33860  0.01955
df_in[, -1]Pos_Val_for_Lag_2 -0.00284  0.00339   -0.83970  0.40128
Losses of out-of-sample forecasts:  6.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.0391762

$rect$left
[1] -14.44

$rect$top
[1] 0.02665255


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.0227349323  0.0188173126  0.0148996929  0.0109820733  0.0070644536  0.0031468339 -0.0007707857 -0.0046884054
[9] -0.0086060251

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.240 0.245 0.241 0.245 0.226 0.218 0.225 0.240
VaR Breaks (%) 0.024 0.028 0.040 0.024 0.052 0.048 0.052 0.056
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 1
MV CAViaR + SAV 6 1
MV CAViaR + AS 2 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2014_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_10pc_2014_glob_etf.csv", uv_list = var_10pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01139   0.00080  -14.27452   0.00000
DF           -0.00015   0.00027   -0.54500   0.58587
MSE of out-of-sample forecasts:  0.0001930808 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01149     -0.01313 -0.01063
df_in[, -1]Diff_Index_1 -0.00111     -0.00227  0.00160
df_in[, -1]Lag_1        -0.17824     -0.42166  0.52715
df_in[, -1]Lag_2         0.25958      0.08782  0.32527
df_in[, -1]Lag_3         0.04991     -0.07212  0.11619
df_in[, -1]Lag_4         0.13497      0.02178  0.23484
df_in[, -1]Lag_5        -0.05524     -0.19230  0.14051
df_in[, -1]Lag_6         0.08632      0.02820  0.17583
df_in[, -1]Lag_7         0.11072      0.00381  0.19347
df_in[, -1]Lag_8         0.02471     -0.07001  0.12504
Losses of out-of-sample forecasts:  13 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00929  0.00113   -8.23790  0.00000
df_in[, -1]Diff_Index_1 -0.00045  0.00035   -1.28432  0.19933
df_in[, -1]Diff_Index_2  0.00108  0.00209    0.51778  0.60472
df_in[, -1]Diff_Index_3  0.00222  0.00211    1.05604  0.29121
df_in[, -1]Diff_Index_4  0.00376  0.00198    1.89661  0.05817
df_in[, -1]Diff_Index_5  0.00116  0.00225    0.51588  0.60606
df_in[, -1]Diff_Index_6 -0.00081  0.00223   -0.36180  0.71758
df_in[, -1]Lag_1        -0.34029  0.13139   -2.58997  0.00974
Losses of out-of-sample forecasts:  4 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                              coefficients lower bd upper bd
(Intercept)                   -0.01681     -0.02382 -0.01048
df_in[, -1]Diff_Index_1       -0.00010     -0.00207  0.00107
df_in[, -1]Diff_Index_2        0.00026     -0.00177  0.00064
df_in[, -1]Lag_1              -0.09481     -0.57693  0.35033
df_in[, -1]Lag_2               0.22400      0.04544  0.37096
df_in[, -1]Lag_3              -0.05336     -0.19841  0.07696
df_in[, -1]Lag_4               0.20612     -0.04775  0.31897
df_in[, -1]Lag_5              -0.15609     -0.23881  0.17189
df_in[, -1]Lag_6              -0.04319     -0.17486  0.17780
df_in[, -1]Lag_7               0.08208     -0.01868  0.27110
df_in[, -1]Lag_8              -0.03290     -0.22779  0.19172
df_in[, -1]Lag_9              -0.05959     -0.35745  0.06685
df_in[, -1]Lag_10              0.19831      0.08385  0.25363
df_in[, -1]Pos_Val_for_Lag_1   0.00375      0.00086  0.00773
df_in[, -1]Pos_Val_for_Lag_2  -0.00122     -0.00460  0.00137
df_in[, -1]Pos_Val_for_Lag_3   0.00184     -0.00058  0.00463
df_in[, -1]Pos_Val_for_Lag_4  -0.00110     -0.00459  0.00171
df_in[, -1]Pos_Val_for_Lag_5   0.00229     -0.00127  0.00543
df_in[, -1]Pos_Val_for_Lag_6   0.00273     -0.00088  0.00527
df_in[, -1]Pos_Val_for_Lag_7   0.00011     -0.00402  0.00292
df_in[, -1]Pos_Val_for_Lag_8   0.00160     -0.00183  0.00458
df_in[, -1]Pos_Val_for_Lag_9   0.00237     -0.00025  0.00824
df_in[, -1]Pos_Val_for_Lag_10 -0.00249     -0.00646  0.00101
Losses of out-of-sample forecasts:  8 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.03323897

$rect$left
[1] -14.44

$rect$top
[1] 0.02631538


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.022991487  0.019667590  0.016343693  0.013019795  0.009695898  0.006372001  0.003048103 -0.000275794 -0.003599691

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.377 0.358 0.388 0.358 0.367 0.359 0.364 0.368
VaR Breaks (%) 0.056 0.048 0.084 0.068 0.116 0.104 0.112 0.132
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 8
MV CAViaR + SAV 6 1
MV CAViaR + AS 2 10
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Commodity ETFs

Bond ETFs

# iShares 1-3 Year Treasury Bond Fund (SHY)
# iShares 7-10 Year Treasury Bond Fund (IEF)
# iShares 20+ Year Treasury Bond Fund (TLT)
# iShares iBoxx $ Investment Grade Corporate Bond ETF (LQD)
# 1%, 5%, 10% VaR - 2014 - 4th set of predictors
var_1pc_2014_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_1pc_2014_bond_etf.csv", uv_list = var_1pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonunique
3 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) -0.03115  0.00557   -5.59046  0.00000
DF1         -0.00116  0.00258   -0.45042  0.65251
DF2         -0.00122  0.00616   -0.19800  0.84309
DF3          0.00340  0.00782    0.43509  0.66359
MSE of out-of-sample forecasts:  0.001064888 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.03012     -0.03225 -0.02819
df_in[, -1]Diff_Index_1 -0.00057     -0.00204 -0.00015
df_in[, -1]Diff_Index_2  0.00005     -0.00171  0.00084
df_in[, -1]Diff_Index_3  0.00347      0.00127  0.00681
df_in[, -1]Diff_Index_4 -0.01298     -0.01582 -0.00655
df_in[, -1]Lag_1         0.36242      0.00616  0.62791
df_in[, -1]Lag_2         0.37497      0.28035  0.39299
df_in[, -1]Lag_3        -0.03443     -0.16913  0.09254
df_in[, -1]Lag_4         0.37624      0.25264  0.39199
df_in[, -1]Lag_5        -0.10986     -0.22825 -0.05548
df_in[, -1]Lag_6         0.22604      0.13797  0.27902
df_in[, -1]Lag_7         0.12116      0.03852  0.27189
df_in[, -1]Lag_8         0.11340     -0.02537  0.12138
Losses of out-of-sample forecasts:  2.5 
4 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.02801  0.00558   -5.02133  0.00000
df_in[, -1]Diff_Index_1 -0.00068  0.00206   -0.32879  0.74238
df_in[, -1]Diff_Index_2 -0.00022  0.00550   -0.03915  0.96878
df_in[, -1]Diff_Index_3  0.00308  0.00655    0.47055  0.63807
df_in[, -1]Lag_1        -0.53229  0.59226   -0.89874  0.36901
Losses of out-of-sample forecasts:  2.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.03905     -0.06534 -0.03635
df_in[, -1]Diff_Index_1      -0.00058     -0.00145  0.00135
df_in[, -1]Diff_Index_2      -0.00075     -0.00144  0.00051
df_in[, -1]Diff_Index_3       0.00538      0.00177  0.01261
df_in[, -1]Diff_Index_4      -0.00585     -0.01269  0.00674
df_in[, -1]Lag_1              0.19688     -0.93821  0.47775
df_in[, -1]Lag_2              0.34487      0.32865  0.36422
df_in[, -1]Lag_3             -0.03868     -0.35073  0.24756
df_in[, -1]Lag_4              0.19151     -0.04591  0.24923
df_in[, -1]Lag_5             -0.21597     -0.27468 -0.19804
df_in[, -1]Lag_6              0.02042     -0.18822  0.12932
df_in[, -1]Lag_7             -0.03257     -0.05017  0.15201
df_in[, -1]Lag_8              0.10358     -0.03602  0.10397
df_in[, -1]Pos_Val_for_Lag_1  0.00241     -0.00069  0.01243
df_in[, -1]Pos_Val_for_Lag_2 -0.00122     -0.01405  0.01073
df_in[, -1]Pos_Val_for_Lag_3  0.00075     -0.00882  0.01243
df_in[, -1]Pos_Val_for_Lag_4  0.00656     -0.00938  0.02102
df_in[, -1]Pos_Val_for_Lag_5  0.00442     -0.00325  0.02101
df_in[, -1]Pos_Val_for_Lag_6  0.00368     -0.00350  0.00744
df_in[, -1]Pos_Val_for_Lag_7  0.00300     -0.00370  0.01633
df_in[, -1]Pos_Val_for_Lag_8  0.00016     -0.00233  0.02128
Losses of out-of-sample forecasts:  1.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.05387232

$rect$left
[1] -14.44

$rect$top
[1] 0.02748713


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.0220998945  0.0167126626  0.0113254307  0.0059381988  0.0005509669 -0.0048362650 -0.0102234969 -0.0156107288
[9] -0.0209979607

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.079 0.075 0.072 0.070 0.061 0.057 0.063 0.061
VaR Breaks (%) 0.000 0.000 0.000 0.004 0.008 0.004 0.012 0.028
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 3 NA
MV CAViaR + AR 4 8
MV CAViaR + SAV 3 1
MV CAViaR + AS 4 8
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2014_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_5pc_2014_bond_etf.csv", uv_list = var_5pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
5 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01685   0.00111  -15.24282   0.00000
DF1           0.00083   0.00044    1.89902   0.05785
DF2          -0.00063   0.00123   -0.51421   0.60722
DF3           0.00245   0.00114    2.14932   0.03185
DF4           0.00682   0.00315    2.16585   0.03056
MSE of out-of-sample forecasts:  0.0003614869 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01869     -0.02032 -0.01678
df_in[, -1]Diff_Index_1  0.00039      0.00009  0.00147
df_in[, -1]Lag_1         0.23490      0.07176  0.29015
df_in[, -1]Lag_2         0.17018      0.16065  0.29902
df_in[, -1]Lag_3        -0.03635     -0.13978  0.10375
df_in[, -1]Lag_4         0.30880      0.18648  0.35793
df_in[, -1]Lag_5        -0.02981     -0.18367  0.12235
df_in[, -1]Lag_6         0.21943      0.08100  0.25216
df_in[, -1]Lag_7         0.10804      0.01528  0.17787
df_in[, -1]Lag_8         0.03437     -0.05053  0.09675
df_in[, -1]Lag_9        -0.00680     -0.14662  0.13900
df_in[, -1]Lag_10        0.16083      0.10523  0.22747
Losses of out-of-sample forecasts:  9.5 
8 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01515   0.00133  -11.41212   0.00000
df_in[, -1]Diff_Index_1   0.00105   0.00035    3.04308   0.00240
df_in[, -1]Diff_Index_2  -0.00042   0.00096   -0.43240   0.66554
df_in[, -1]Diff_Index_3   0.00242   0.00129    1.87466   0.06113
df_in[, -1]Diff_Index_4   0.00598   0.00274    2.18025   0.02947
df_in[, -1]Lag_1         -0.23053   0.09932   -2.32099   0.02049
Losses of out-of-sample forecasts:  2.5 
18 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value     Std. Error t value   Pr(>|t|) 
(Intercept)                   -0.02059   0.00185  -11.14275   0.00000
df_in[, -1]Diff_Index_1        0.00179   0.00048    3.70655   0.00022
df_in[, -1]Diff_Index_2       -0.00086   0.00092   -0.92519   0.35509
df_in[, -1]Diff_Index_3        0.00442   0.00173    2.55087   0.01089
df_in[, -1]Diff_Index_4        0.01047   0.00353    2.97019   0.00305
df_in[, -1]Lag_1              -0.48364   0.13552   -3.56867   0.00038
df_in[, -1]Pos_Val_for_Lag_1   0.00727   0.00237    3.06868   0.00221
Losses of out-of-sample forecasts:  6.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.04065019

$rect$left
[1] -14.44

$rect$top
[1] 0.02673626


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.022671239  0.018606220  0.014541201  0.010476182  0.006411163  0.002346144 -0.001718875 -0.005783894 -0.009848913

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.241 0.237 0.231 0.237 0.226 0.218 0.225 0.240
VaR Breaks (%) 0.028 0.012 0.040 0.024 0.052 0.048 0.052 0.056
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 4 NA
MV CAViaR + AR 1 10
MV CAViaR + SAV 4 1
MV CAViaR + AS 4 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2014_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_10pc_2014_bond_etf.csv", uv_list = var_10pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01122   0.00084  -13.43244   0.00000
DF1           0.00011   0.00040    0.26522   0.79090
DF2          -0.00075   0.00092   -0.82020   0.41230
MSE of out-of-sample forecasts:  0.0001874827 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01224     -0.01327 -0.01054
df_in[, -1]Diff_Index_1  0.00045     -0.00056  0.00117
df_in[, -1]Lag_1         0.11918     -0.07974  0.24628
df_in[, -1]Lag_2         0.22930      0.08471  0.34518
df_in[, -1]Lag_3         0.01746     -0.09756  0.12714
df_in[, -1]Lag_4         0.15808      0.00125  0.27153
df_in[, -1]Lag_5        -0.07501     -0.20263  0.15641
df_in[, -1]Lag_6         0.09446      0.02222  0.16808
df_in[, -1]Lag_7         0.09139      0.01526  0.25698
df_in[, -1]Lag_8         0.00687     -0.10471  0.13907
df_in[, -1]Lag_9         0.00102     -0.15755  0.16539
Losses of out-of-sample forecasts:  14 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01036  0.00124   -8.35951  0.00000
df_in[, -1]Diff_Index_1  0.00026  0.00051    0.51304  0.60804
df_in[, -1]Lag_1        -0.14243  0.15312   -0.93017  0.35251
Losses of out-of-sample forecasts:  7 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01870     -0.02326 -0.01373
df_in[, -1]Diff_Index_1       0.00093      0.00007  0.00147
df_in[, -1]Diff_Index_2      -0.00198     -0.00275  0.00075
df_in[, -1]Diff_Index_3       0.00406      0.00153  0.00605
df_in[, -1]Lag_1             -0.30404     -0.42563 -0.04870
df_in[, -1]Lag_2              0.21095     -0.02462  0.31884
df_in[, -1]Lag_3             -0.06462     -0.14617  0.00519
df_in[, -1]Lag_4              0.09478     -0.12025  0.23641
df_in[, -1]Lag_5             -0.22531     -0.34951 -0.01584
df_in[, -1]Lag_6              0.02597     -0.20462  0.09103
df_in[, -1]Lag_7              0.12227     -0.01630  0.26216
df_in[, -1]Lag_8             -0.03491     -0.22957  0.09715
df_in[, -1]Pos_Val_for_Lag_1  0.00434      0.00207  0.00753
df_in[, -1]Pos_Val_for_Lag_2 -0.00166     -0.00385  0.00114
df_in[, -1]Pos_Val_for_Lag_3  0.00268     -0.00078  0.00459
df_in[, -1]Pos_Val_for_Lag_4  0.00056     -0.00292  0.00354
df_in[, -1]Pos_Val_for_Lag_5  0.00308      0.00025  0.00619
df_in[, -1]Pos_Val_for_Lag_6  0.00104     -0.00094  0.00413
df_in[, -1]Pos_Val_for_Lag_7 -0.00050     -0.00271  0.00202
df_in[, -1]Pos_Val_for_Lag_8  0.00295     -0.00071  0.00543
Losses of out-of-sample forecasts:  9 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.03323897

$rect$left
[1] -14.44

$rect$top
[1] 0.02631538


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.022991487  0.019667590  0.016343693  0.013019795  0.009695898  0.006372001  0.003048103 -0.000275794 -0.003599691

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.370 0.364 0.371 0.352 0.367 0.359 0.364 0.368
VaR Breaks (%) 0.056 0.044 0.072 0.064 0.116 0.104 0.112 0.132
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 2 NA
MV CAViaR + AR 1 9
MV CAViaR + SAV 1 1
MV CAViaR + AS 3 8
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

All ETFs

# 1%, 5%, 10% VaR - 2014 - 5th set of predictors
var_1pc_2014_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_1pc_2014_all_etf.csv", uv_list = var_1pc_2014_usetf[[1]])
200 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.03010   0.00143  -21.04023   0.00000
DF1           0.00041   0.00034    1.21352   0.22522
DF2          -0.00156   0.00059   -2.62552   0.00879
DF3           0.00213   0.00106    2.00575   0.04516
DF4           0.00202   0.00207    0.97331   0.33064
DF5           0.00196   0.00162    1.20613   0.22806
DF6           0.00062   0.00277    0.22347   0.82322
DF7           0.00335   0.00193    1.73428   0.08318
DF8          -0.00066   0.00169   -0.39214   0.69504
DF9           0.01235   0.00281    4.39526   0.00001
DF10          0.00849   0.00326    2.59926   0.00948
DF11          0.00518   0.00425    1.21862   0.22328
DF12         -0.00034   0.00387   -0.08726   0.93048
DF13          0.00124   0.00345    0.35873   0.71987
DF14         -0.00126   0.00315   -0.40105   0.68847
DF15          0.00304   0.00526    0.57814   0.56330
DF16         -0.00503   0.00381   -1.31837   0.18769
DF17          0.00853   0.00368    2.31594   0.02077
DF18         -0.00006   0.00641   -0.00903   0.99280
DF19          0.01115   0.00546    2.04109   0.04151
DF20         -0.01059   0.00706   -1.49896   0.13421
DF21          0.00555   0.00779    0.71255   0.47629
DF22          0.00987   0.00799    1.23469   0.21724
DF23         -0.01043   0.00961   -1.08573   0.27786
MSE of out-of-sample forecasts:  0.00104662 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                         coefficients lower bd upper bd
(Intercept)              -0.02600     -0.03032 -0.02504
df_in[, -1]Diff_Index_1  -0.00269     -0.00809  0.00834
df_in[, -1]Diff_Index_2  -0.00110     -0.00215  0.00047
df_in[, -1]Diff_Index_3   0.00518     -0.00097  0.00777
df_in[, -1]Diff_Index_4   0.00042     -0.00150  0.00276
df_in[, -1]Diff_Index_5   0.00259     -0.00134  0.00695
df_in[, -1]Diff_Index_6   0.00056     -0.00522  0.00434
df_in[, -1]Diff_Index_7   0.00506      0.00028  0.00635
df_in[, -1]Diff_Index_8   0.00125     -0.00568  0.00759
df_in[, -1]Diff_Index_9   0.00200     -0.00241  0.00952
df_in[, -1]Diff_Index_10  0.00577     -0.00046  0.00688
df_in[, -1]Diff_Index_11 -0.00121     -0.01433  0.00784
df_in[, -1]Diff_Index_12  0.00054     -0.00536  0.00880
df_in[, -1]Diff_Index_13  0.00493     -0.00120  0.00918
df_in[, -1]Diff_Index_14 -0.00205     -0.00721  0.01472
df_in[, -1]Diff_Index_15 -0.00584     -0.01070  0.01199
df_in[, -1]Diff_Index_16 -0.00160     -0.02040  0.00541
df_in[, -1]Diff_Index_17 -0.00052     -0.00457  0.00624
df_in[, -1]Diff_Index_18 -0.00080     -0.00685  0.00731
df_in[, -1]Diff_Index_19  0.00770      0.00152  0.02455
df_in[, -1]Diff_Index_20 -0.00563     -0.01980  0.01887
df_in[, -1]Lag_1         -0.95580     -3.33167  3.57101
df_in[, -1]Lag_2          0.13015      0.00665  0.41990
df_in[, -1]Lag_3         -0.11165     -0.20105  0.37461
df_in[, -1]Lag_4          0.39567      0.08520  0.47863
df_in[, -1]Lag_5         -0.17773     -0.26607  0.13133
df_in[, -1]Lag_6          0.30646     -0.01165  0.38304
df_in[, -1]Lag_7          0.10645     -0.04776  0.18161
df_in[, -1]Lag_8          0.05838     -0.09279  0.09306
df_in[, -1]Lag_9         -0.00581     -0.28074  0.17149
df_in[, -1]Lag_10         0.19776      0.13357  0.22601
Losses of out-of-sample forecasts:  0.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                         coefficients lower bd upper bd
(Intercept)              -0.01789     -0.01886 -0.00904
df_in[, -1]Diff_Index_1   0.00002     -0.00092  0.00092
df_in[, -1]Diff_Index_2  -0.00111     -0.00171  0.00111
df_in[, -1]Diff_Index_3   0.00255     -0.00081  0.00441
df_in[, -1]Diff_Index_4   0.00076     -0.00131  0.00187
df_in[, -1]Diff_Index_5   0.00576     -0.00309  0.00663
df_in[, -1]Diff_Index_6  -0.00160     -0.00352  0.00426
df_in[, -1]Diff_Index_7   0.00312      0.00007  0.00444
df_in[, -1]Diff_Index_8  -0.00027     -0.00245  0.00256
df_in[, -1]Diff_Index_9   0.00214     -0.00151  0.00854
df_in[, -1]Diff_Index_10  0.00447      0.00236  0.01083
df_in[, -1]Diff_Index_11 -0.00222     -0.00464  0.00094
df_in[, -1]Lag_1          0.17225     -1.33052  0.30733
df_in[, -1]Lag_2         -0.61180     -1.14176 -0.47707
df_in[, -1]Lag_3         -0.06845     -0.71878  0.09291
df_in[, -1]Lag_4         -0.19353     -0.62654  0.24047
df_in[, -1]Lag_5         -0.44457     -0.83637 -0.28533
Losses of out-of-sample forecasts:  10.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.04357     -0.05304 -0.02306
df_in[, -1]Diff_Index_1       0.00038     -0.00771  0.00802
df_in[, -1]Diff_Index_2       0.00005     -0.00285  0.00058
df_in[, -1]Diff_Index_3       0.00403     -0.00102  0.00673
df_in[, -1]Diff_Index_4      -0.00128     -0.00269  0.00356
df_in[, -1]Diff_Index_5       0.00305     -0.00376  0.00663
df_in[, -1]Diff_Index_6       0.00030     -0.00439  0.00220
df_in[, -1]Diff_Index_7       0.00454      0.00152  0.00597
df_in[, -1]Diff_Index_8      -0.00116     -0.00478  0.00527
df_in[, -1]Diff_Index_9       0.00259     -0.00093  0.01091
df_in[, -1]Diff_Index_10      0.00200      0.00020  0.00697
df_in[, -1]Diff_Index_11     -0.00167     -0.01192  0.00661
df_in[, -1]Diff_Index_12     -0.00060     -0.00693  0.00457
df_in[, -1]Diff_Index_13      0.00108     -0.00416  0.00604
df_in[, -1]Lag_1              0.01773     -2.92555  3.21355
df_in[, -1]Lag_2              0.22681      0.03230  0.38917
df_in[, -1]Lag_3             -0.20663     -0.29179  0.25042
df_in[, -1]Lag_4              0.36626     -0.12787  0.44984
df_in[, -1]Lag_5             -0.22411     -0.37406 -0.19434
df_in[, -1]Lag_6              0.07184     -0.07261  0.21287
df_in[, -1]Lag_7             -0.19376     -0.29907  0.05031
df_in[, -1]Lag_8             -0.14997     -0.17392  0.04852
df_in[, -1]Lag_9             -0.13871     -0.47649  0.17314
df_in[, -1]Pos_Val_for_Lag_1  0.00682     -0.00923  0.01452
df_in[, -1]Pos_Val_for_Lag_2 -0.00798     -0.01631  0.00449
df_in[, -1]Pos_Val_for_Lag_3  0.00510     -0.01296  0.00711
df_in[, -1]Pos_Val_for_Lag_4 -0.00143     -0.00372  0.01546
df_in[, -1]Pos_Val_for_Lag_5  0.00278      0.00001  0.01936
df_in[, -1]Pos_Val_for_Lag_6  0.00384     -0.00833  0.01083
df_in[, -1]Pos_Val_for_Lag_7  0.00906     -0.00268  0.01329
df_in[, -1]Pos_Val_for_Lag_8  0.00773     -0.00304  0.01116
df_in[, -1]Pos_Val_for_Lag_9  0.00605     -0.00239  0.02179
Losses of out-of-sample forecasts:  0.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.07726224

$rect$left
[1] -14.44

$rect$top
[1] 0.02881541


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.021089187  0.013362963  0.005636739 -0.002089484 -0.009815708 -0.017541932 -0.025268156 -0.032994380 -0.040720603

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.087 0.073 0.107 0.079 0.061 0.057 0.063 0.061
VaR Breaks (%) 0.008 0.008 0.052 0.008 0.008 0.004 0.012 0.028
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 23 NA
MV CAViaR + AR 20 10
MV CAViaR + SAV 11 5
MV CAViaR + AS 13 9
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2014_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_5pc_2014_all_etf.csv", uv_list = var_5pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01691   0.00129  -13.06203   0.00000
DF           -0.00033   0.00030   -1.09972   0.27172
MSE of out-of-sample forecasts:  0.000356382 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                         coefficients lower bd upper bd
(Intercept)              -0.01735     -0.02009 -0.01559
df_in[, -1]Diff_Index_1   0.00067     -0.00763  0.00603
df_in[, -1]Diff_Index_2  -0.00015     -0.00153  0.00102
df_in[, -1]Diff_Index_3   0.00220      0.00049  0.00391
df_in[, -1]Diff_Index_4   0.00095     -0.00102  0.00232
df_in[, -1]Diff_Index_5   0.00145     -0.00216  0.00446
df_in[, -1]Diff_Index_6  -0.00181     -0.00496  0.00284
df_in[, -1]Diff_Index_7   0.00290     -0.00008  0.00395
df_in[, -1]Diff_Index_8  -0.00235     -0.00498  0.00349
df_in[, -1]Diff_Index_9   0.00289      0.00013  0.00858
df_in[, -1]Diff_Index_10  0.00427      0.00114  0.00697
df_in[, -1]Diff_Index_11 -0.00368     -0.00673  0.00549
df_in[, -1]Diff_Index_12 -0.00043     -0.00371  0.00198
df_in[, -1]Diff_Index_13 -0.00113     -0.00244  0.00296
df_in[, -1]Diff_Index_14  0.00198     -0.00094  0.00682
df_in[, -1]Diff_Index_15 -0.00239     -0.00828  0.00141
df_in[, -1]Diff_Index_16 -0.00338     -0.00880  0.00114
df_in[, -1]Diff_Index_17 -0.00327     -0.00876  0.00056
df_in[, -1]Diff_Index_18 -0.00093     -0.00719  0.00462
df_in[, -1]Diff_Index_19  0.01239      0.00386  0.01875
df_in[, -1]Diff_Index_20 -0.00083     -0.00877  0.00333
df_in[, -1]Diff_Index_21 -0.01177     -0.02268  0.00605
df_in[, -1]Lag_1          0.32875     -2.86055  2.39116
df_in[, -1]Lag_2          0.01156     -0.06905  0.08023
df_in[, -1]Lag_3         -0.08785     -0.20374 -0.00273
df_in[, -1]Lag_4          0.29607      0.20556  0.39526
df_in[, -1]Lag_5         -0.11600     -0.18237 -0.05746
df_in[, -1]Lag_6          0.06170     -0.05926  0.20110
df_in[, -1]Lag_7         -0.01422     -0.10812  0.06203
df_in[, -1]Lag_8          0.03720     -0.03077  0.11812
df_in[, -1]Lag_9         -0.02938     -0.18629  0.10032
df_in[, -1]Lag_10         0.14645      0.07905  0.22450
Losses of out-of-sample forecasts:  4.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                         coefficients lower bd upper bd
(Intercept)              -0.01017     -0.01209 -0.00508
df_in[, -1]Diff_Index_1  -0.00001     -0.00096  0.00029
df_in[, -1]Diff_Index_2  -0.00018     -0.00105  0.00081
df_in[, -1]Diff_Index_3   0.00149     -0.00008  0.00259
df_in[, -1]Diff_Index_4  -0.00002     -0.00259  0.00228
df_in[, -1]Diff_Index_5   0.00028     -0.00145  0.00432
df_in[, -1]Diff_Index_6  -0.00093     -0.00433  0.00031
df_in[, -1]Diff_Index_7   0.00146     -0.00167  0.00371
df_in[, -1]Diff_Index_8   0.00017     -0.00312  0.00299
df_in[, -1]Diff_Index_9   0.00537     -0.00011  0.00820
df_in[, -1]Diff_Index_10  0.00235      0.00064  0.00820
df_in[, -1]Diff_Index_11 -0.00142     -0.00413  0.00300
df_in[, -1]Diff_Index_12 -0.00189     -0.00587  0.00033
df_in[, -1]Diff_Index_13 -0.00305     -0.00427  0.00148
df_in[, -1]Diff_Index_14 -0.00252     -0.00607  0.00623
df_in[, -1]Diff_Index_15 -0.00493     -0.00833  0.00400
df_in[, -1]Diff_Index_16 -0.00429     -0.01171  0.00263
df_in[, -1]Diff_Index_17 -0.00345     -0.00880  0.00642
df_in[, -1]Lag_1          0.18614     -0.20472  0.35079
df_in[, -1]Lag_2         -0.42001     -0.93378 -0.11094
df_in[, -1]Lag_3         -0.30024     -0.57691  0.03244
df_in[, -1]Lag_4          0.00713     -0.61173  0.21385
df_in[, -1]Lag_5         -0.20114     -0.62540 -0.04185
df_in[, -1]Lag_6         -0.16924     -0.37653 -0.01709
Losses of out-of-sample forecasts:  8.5 
47 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             Value    Std. Error t value  Pr(>|t|)
(Intercept)                  -0.02018  0.00242   -8.35584  0.00000
df_in[, -1]Diff_Index_1      -0.00180  0.00402   -0.44811  0.65418
df_in[, -1]Diff_Index_2      -0.00014  0.00067   -0.21301  0.83137
df_in[, -1]Diff_Index_3       0.00258  0.00147    1.75355  0.07982
df_in[, -1]Diff_Index_4      -0.00001  0.00073   -0.01999  0.98405
df_in[, -1]Diff_Index_5       0.00065  0.00158    0.41295  0.67973
df_in[, -1]Diff_Index_6       0.00056  0.00316    0.17646  0.85997
df_in[, -1]Diff_Index_7       0.00327  0.00143    2.29425  0.02199
df_in[, -1]Diff_Index_8      -0.00087  0.00235   -0.36802  0.71294
df_in[, -1]Diff_Index_9       0.00546  0.00179    3.04682  0.00238
df_in[, -1]Diff_Index_10      0.00137  0.00151    0.90792  0.36415
df_in[, -1]Diff_Index_11     -0.00064  0.00315   -0.20130  0.84050
df_in[, -1]Diff_Index_12     -0.00022  0.00271   -0.08107  0.93540
df_in[, -1]Diff_Index_13      0.00053  0.00200    0.26800  0.78876
df_in[, -1]Diff_Index_14      0.00375  0.00220    1.70549  0.08842
df_in[, -1]Diff_Index_15     -0.00237  0.00258   -0.91870  0.35848
df_in[, -1]Diff_Index_16     -0.00142  0.00245   -0.57781  0.56353
df_in[, -1]Diff_Index_17     -0.00171  0.00305   -0.56099  0.57493
df_in[, -1]Diff_Index_18     -0.00426  0.00260   -1.64139  0.10104
df_in[, -1]Diff_Index_19      0.00817  0.00368    2.22082  0.02659
df_in[, -1]Diff_Index_20     -0.00251  0.00427   -0.58723  0.55718
df_in[, -1]Diff_Index_21     -0.00291  0.00483   -0.60138  0.54773
df_in[, -1]Diff_Index_22      0.01249  0.00476    2.62697  0.00875
df_in[, -1]Lag_1             -0.81474  1.53814   -0.52969  0.59645
df_in[, -1]Lag_2              0.19913  0.08683    2.29345  0.02204
df_in[, -1]Lag_3             -0.02622  0.07484   -0.35029  0.72619
df_in[, -1]Lag_4              0.16465  0.10763    1.52981  0.12639
df_in[, -1]Pos_Val_for_Lag_1  0.00670  0.00191    3.50253  0.00048
df_in[, -1]Pos_Val_for_Lag_2 -0.00424  0.00170   -2.48901  0.01298
df_in[, -1]Pos_Val_for_Lag_3  0.00024  0.00165    0.14836  0.88209
df_in[, -1]Pos_Val_for_Lag_4  0.00350  0.00183    1.91137  0.05625
Losses of out-of-sample forecasts:  5.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.04281603

$rect$left
[1] -14.44

$rect$top
[1] 0.02685925


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.022577650  0.018296047  0.014014444  0.009732841  0.005451238  0.001169635 -0.003111968 -0.007393571 -0.011675174

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.241 0.256 0.320 0.246 0.226 0.218 0.225 0.240
VaR Breaks (%) 0.024 0.032 0.084 0.028 0.052 0.048 0.052 0.056
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 21 10
MV CAViaR + SAV 17 6
MV CAViaR + AS 22 4
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2014_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2010-01-01", end_date = "2014-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_10pc_2014_all_etf.csv", uv_list = var_10pc_2014_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01164   0.00087  -13.34373   0.00000
DF1          -0.00019   0.00018   -1.05531   0.29154
DF2           0.00041   0.00050    0.82917   0.40721
DF3           0.00078   0.00093    0.83279   0.40516
DF4           0.00134   0.00088    1.52801   0.12683
DF5          -0.00034   0.00125   -0.27261   0.78521
DF6          -0.00303   0.00145   -2.09540   0.03639
MSE of out-of-sample forecasts:  0.0002071213 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01158     -0.01313 -0.01061
df_in[, -1]Diff_Index_1 -0.00128     -0.00306  0.00149
df_in[, -1]Lag_1        -0.36707     -1.00515  0.65223
df_in[, -1]Lag_2         0.23934      0.08322  0.32185
df_in[, -1]Lag_3         0.02915     -0.07971  0.12334
df_in[, -1]Lag_4         0.16905      0.01181  0.25882
df_in[, -1]Lag_5        -0.08977     -0.19286  0.13999
df_in[, -1]Lag_6         0.08572      0.01897  0.19171
df_in[, -1]Lag_7         0.12051     -0.00224  0.25061
df_in[, -1]Lag_8         0.02006     -0.08811  0.15090
df_in[, -1]Lag_9         0.01411     -0.12339  0.13306
Losses of out-of-sample forecasts:  14 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01025  0.00113   -9.06954  0.00000
df_in[, -1]Diff_Index_1 -0.00009  0.00029   -0.32171  0.74774
df_in[, -1]Diff_Index_2  0.00025  0.00051    0.50041  0.61690
df_in[, -1]Lag_1        -0.15843  0.14567   -1.08759  0.27704
Losses of out-of-sample forecasts:  7 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01586     -0.02270 -0.01031
df_in[, -1]Diff_Index_1      -0.00102     -0.00264  0.00051
df_in[, -1]Lag_1             -0.39311     -1.04487  0.29837
df_in[, -1]Lag_2              0.28569     -0.02972  0.37911
df_in[, -1]Lag_3             -0.05829     -0.20873  0.09377
df_in[, -1]Lag_4              0.19038     -0.02517  0.30625
df_in[, -1]Lag_5             -0.18512     -0.30264  0.10644
df_in[, -1]Lag_6              0.05950     -0.08902  0.16805
df_in[, -1]Lag_7              0.15361     -0.02626  0.27521
df_in[, -1]Lag_8             -0.03621     -0.16863  0.12760
df_in[, -1]Pos_Val_for_Lag_1  0.00491      0.00085  0.00721
df_in[, -1]Pos_Val_for_Lag_2 -0.00180     -0.00516  0.00160
df_in[, -1]Pos_Val_for_Lag_3  0.00191     -0.00077  0.00575
df_in[, -1]Pos_Val_for_Lag_4 -0.00094     -0.00430  0.00334
df_in[, -1]Pos_Val_for_Lag_5  0.00303     -0.00116  0.00625
df_in[, -1]Pos_Val_for_Lag_6  0.00004     -0.00190  0.00398
df_in[, -1]Pos_Val_for_Lag_7 -0.00081     -0.00330  0.00297
df_in[, -1]Pos_Val_for_Lag_8  0.00125     -0.00205  0.00461
Losses of out-of-sample forecasts:  11 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 134.4887

$rect$h
[1] 0.03368237

$rect$left
[1] -14.44

$rect$top
[1] 0.02634056


$text
$text$x
[1] 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514 24.21514

$text$y
[1]  0.0229723274  0.0196040905  0.0162358535  0.0128676165  0.0094993796  0.0061311426  0.0027629057 -0.0006053313
[9] -0.0039735682

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.371 0.359 0.370 0.361 0.367 0.359 0.364 0.368
VaR Breaks (%) 0.056 0.044 0.072 0.056 0.116 0.104 0.112 0.132
Note:
Calculated using 250 trading days from 2014-01-03 to 2014-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 6 NA
MV CAViaR + AR 1 9
MV CAViaR + SAV 2 1
MV CAViaR + AS 1 8
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

2016 Ending

U.S. ETFs

# 1%, 5%, 10% VaR - 2016 - 1st set of predictors
var_1pc_2016_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_1pc_2016_us_etf.csv", uv_list = var_1pc_2016_usetf[[1]])

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.02224   0.00157  -14.20664   0.00000
DF           -0.00115   0.00044   -2.63343   0.00858
MSE of out-of-sample forecasts:  0.000596444 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02187     -0.02397 -0.01922
df_in[, -1]Diff_Index_1 -0.00051     -0.01173  0.00273
df_in[, -1]Lag_1         0.25586     -3.32886  1.23271
df_in[, -1]Lag_2         0.29223      0.12206  0.34047
df_in[, -1]Lag_3         0.22219      0.00892  0.27220
df_in[, -1]Lag_4         0.04417     -0.07217  0.24234
df_in[, -1]Lag_5        -0.13877     -0.21567  0.51421
df_in[, -1]Lag_6         0.31715      0.16642  0.40220
Losses of out-of-sample forecasts:  2.5 
7 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01892  0.00239   -7.92511  0.00000
df_in[, -1]Diff_Index_1 -0.00113  0.00034   -3.31704  0.00094
df_in[, -1]Lag_1        -0.42117  0.18040   -2.33457  0.01976
Losses of out-of-sample forecasts:  4.5 
5 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value     Std. Error t value   Pr(>|t|) 
(Intercept)                   -0.02487   0.00207  -12.02995   0.00000
df_in[, -1]Diff_Index_1       -0.00135   0.00451   -0.29841   0.76545
df_in[, -1]Lag_1              -0.18122   1.45275   -0.12474   0.90075
df_in[, -1]Pos_Val_for_Lag_1   0.00565   0.00395    1.42976   0.15310
Losses of out-of-sample forecasts:  2.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04983222

$rect$left
[1] -14.36

$rect$top
[1] 0.02691495


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.021931725  0.016948503  0.011965282  0.006982060  0.001998838 -0.002984383 -0.007967605 -0.012950826 -0.017934048

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.087 0.093 0.085 0.09 0.078 0.082 0.078 0.077
VaR Breaks (%) 0.020 0.020 0.028 0.02 0.012 0.020 0.012 0.004
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 6
MV CAViaR + SAV 1 1
MV CAViaR + AS 1 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2016_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_5pc_2016_us_etf.csv", uv_list = var_5pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
18 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01316   0.00070  -18.81567   0.00000
DF1          -0.00061   0.00013   -4.86443   0.00000
DF2          -0.00123   0.00043   -2.86214   0.00430
DF3          -0.00043   0.00049   -0.88227   0.37784
DF4          -0.00228   0.00062   -3.66287   0.00026
DF5          -0.00046   0.00076   -0.60414   0.54589
MSE of out-of-sample forecasts:  0.0002739905 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01302     -0.01395 -0.01207
df_in[, -1]Diff_Index_1 -0.00476     -0.00755 -0.00161
df_in[, -1]Diff_Index_2 -0.00103     -0.00187  0.00017
df_in[, -1]Diff_Index_3 -0.00128     -0.00239 -0.00044
df_in[, -1]Diff_Index_4 -0.00132     -0.00276  0.00017
df_in[, -1]Lag_1        -1.16112     -2.04974 -0.50217
df_in[, -1]Lag_2         0.34792      0.24230  0.43415
df_in[, -1]Lag_3         0.13491      0.01336  0.20699
df_in[, -1]Lag_4         0.08856      0.00954  0.21482
df_in[, -1]Lag_5         0.03812     -0.09587  0.18907
df_in[, -1]Lag_6         0.22738      0.18027  0.30793
df_in[, -1]Lag_7         0.14387     -0.01375  0.21281
df_in[, -1]Lag_8         0.12552      0.05266  0.26960
Losses of out-of-sample forecasts:  1.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01079  0.00108   -9.99499  0.00000
df_in[, -1]Diff_Index_1 -0.00091  0.00043   -2.10692  0.03537
df_in[, -1]Diff_Index_2 -0.00107  0.00081   -1.32069  0.18691
df_in[, -1]Lag_1        -0.40929  0.18094   -2.26205  0.02391
Losses of out-of-sample forecasts:  7.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01501     -0.02080 -0.01063
df_in[, -1]Diff_Index_1      -0.00458     -0.00843  0.00113
df_in[, -1]Diff_Index_2      -0.00128     -0.00188 -0.00021
df_in[, -1]Diff_Index_3      -0.00161     -0.00224  0.00036
df_in[, -1]Diff_Index_4      -0.00170     -0.00343 -0.00005
df_in[, -1]Diff_Index_5       0.00111     -0.00042  0.00197
df_in[, -1]Lag_1             -1.31706     -2.62136  0.40479
df_in[, -1]Lag_2              0.26128      0.10054  0.39400
df_in[, -1]Lag_3              0.12338     -0.03633  0.27675
df_in[, -1]Lag_4              0.10072     -0.08031  0.19236
df_in[, -1]Lag_5             -0.02076     -0.12101  0.23822
df_in[, -1]Lag_6              0.32311      0.21550  0.46435
df_in[, -1]Lag_7              0.11034     -0.14093  0.32827
df_in[, -1]Lag_8              0.16537     -0.01345  0.27677
df_in[, -1]Lag_9             -0.17424     -0.25997  0.02040
df_in[, -1]Pos_Val_for_Lag_1  0.00313      0.00049  0.00577
df_in[, -1]Pos_Val_for_Lag_2  0.00102     -0.00141  0.00400
df_in[, -1]Pos_Val_for_Lag_3 -0.00011     -0.00224  0.00206
df_in[, -1]Pos_Val_for_Lag_4  0.00037     -0.00210  0.00341
df_in[, -1]Pos_Val_for_Lag_5 -0.00008     -0.00320  0.00131
df_in[, -1]Pos_Val_for_Lag_6 -0.00285     -0.00545  0.00025
df_in[, -1]Pos_Val_for_Lag_7 -0.00040     -0.00417  0.00214
df_in[, -1]Pos_Val_for_Lag_8  0.00011     -0.00256  0.00397
df_in[, -1]Pos_Val_for_Lag_9  0.00359     -0.00059  0.00647
Losses of out-of-sample forecasts:  4.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04546367

$rect$left
[1] -14.36

$rect$top
[1] 0.02991372


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.025367350  0.020820983  0.016274617  0.011728250  0.007181883  0.002635516 -0.001910850 -0.006457217 -0.011003584

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.278 0.297 0.257 0.290 0.238 0.238 0.234 0.264
VaR Breaks (%) 0.064 0.056 0.080 0.068 0.032 0.040 0.028 0.032
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 5 NA
MV CAViaR + AR 4 8
MV CAViaR + SAV 2 1
MV CAViaR + AS 5 9
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2016_us_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 9, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_US_ETF_runs/", filename = "var_10pc_2016_us_etf.csv", uv_list = var_10pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.00920   0.00068  -13.54978   0.00000
DF1          -0.00024   0.00026   -0.94547   0.34465
DF2          -0.00079   0.00064   -1.23626   0.21665
DF3          -0.00017   0.00085   -0.19817   0.84295
DF4          -0.00182   0.00121   -1.50212   0.13338
MSE of out-of-sample forecasts:  0.0001710306 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.00989     -0.01095 -0.00851
df_in[, -1]Diff_Index_1 -0.00168     -0.00684  0.00207
df_in[, -1]Diff_Index_2 -0.00045     -0.00176  0.00025
df_in[, -1]Diff_Index_3 -0.00059     -0.00180  0.00037
df_in[, -1]Diff_Index_4 -0.00159     -0.00285  0.00062
df_in[, -1]Diff_Index_5  0.00015     -0.00155  0.00189
df_in[, -1]Lag_1        -0.31757     -2.01664  0.88088
df_in[, -1]Lag_2         0.26419      0.09421  0.33316
df_in[, -1]Lag_3         0.05058     -0.01788  0.15241
df_in[, -1]Lag_4         0.12752     -0.04155  0.22696
df_in[, -1]Lag_5        -0.00504     -0.14983  0.11155
df_in[, -1]Lag_6         0.17880      0.06978  0.25799
Losses of out-of-sample forecasts:  6.938894e-16 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00807  0.00093   -8.67681  0.00000
df_in[, -1]Diff_Index_1 -0.00040  0.00039   -1.04679  0.29545
df_in[, -1]Lag_1        -0.19025  0.17285   -1.10070  0.27129
Losses of out-of-sample forecasts:  5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01161     -0.01468 -0.00951
df_in[, -1]Diff_Index_1      -0.00187     -0.00592  0.00227
df_in[, -1]Diff_Index_2      -0.00096     -0.00173  0.00021
df_in[, -1]Diff_Index_3      -0.00016     -0.00194  0.00071
df_in[, -1]Diff_Index_4      -0.00138     -0.00320  0.00022
df_in[, -1]Diff_Index_5       0.00027     -0.00165  0.00149
df_in[, -1]Lag_1             -0.54976     -1.57552  0.77524
df_in[, -1]Lag_2              0.22071      0.08415  0.36667
df_in[, -1]Lag_3             -0.04323     -0.15673  0.09647
df_in[, -1]Lag_4             -0.00448     -0.16368  0.17250
df_in[, -1]Lag_5              0.04246     -0.08355  0.16760
df_in[, -1]Lag_6              0.26634      0.07956  0.42430
df_in[, -1]Pos_Val_for_Lag_1  0.00274      0.00064  0.00484
df_in[, -1]Pos_Val_for_Lag_2  0.00080     -0.00147  0.00306
df_in[, -1]Pos_Val_for_Lag_3  0.00142     -0.00095  0.00353
df_in[, -1]Pos_Val_for_Lag_4  0.00204      0.00013  0.00432
df_in[, -1]Pos_Val_for_Lag_5 -0.00094     -0.00312  0.00107
df_in[, -1]Pos_Val_for_Lag_6 -0.00252     -0.00548  0.00064
Losses of out-of-sample forecasts:  2 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04272322

$rect$left
[1] -14.36

$rect$top
[1] 0.02651124


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.022238914  0.017966592  0.013694270  0.009421948  0.005149626  0.000877304 -0.003395018 -0.007667340 -0.011939662

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.419 0.415 0.401 0.429 0.370 0.373 0.368 0.414
VaR Breaks (%) 0.104 0.100 0.120 0.108 0.088 0.092 0.096 0.072
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 4 NA
MV CAViaR + AR 5 6
MV CAViaR + SAV 1 1
MV CAViaR + AS 5 6
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Global ETFs

# 1%, 5%, 10% VaR - 2016 - 2nd set of predictors
var_1pc_2016_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_1pc_2016_glob_etf.csv", uv_list = var_1pc_2016_usetf[[1]])
Solution may be nonunique
2 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.02255   0.00181  -12.45720   0.00000
DF           -0.00107   0.00021   -5.01059   0.00000
MSE of out-of-sample forecasts:  0.0006124884 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02040     -0.02307 -0.01869
df_in[, -1]Diff_Index_1 -0.00093     -0.00499  0.00320
df_in[, -1]Diff_Index_2  0.00008     -0.00257  0.00101
df_in[, -1]Diff_Index_3 -0.00105     -0.00457  0.00026
df_in[, -1]Diff_Index_4  0.00270     -0.00044  0.00888
df_in[, -1]Diff_Index_5 -0.00102     -0.00262  0.00444
df_in[, -1]Lag_1         0.03035     -1.35423  1.64597
df_in[, -1]Lag_2         0.22330      0.09605  0.26409
df_in[, -1]Lag_3         0.07699     -0.08017  0.29830
df_in[, -1]Lag_4        -0.02299     -0.07624  0.35547
df_in[, -1]Lag_5        -0.15526     -0.20139  0.37625
df_in[, -1]Lag_6         0.19929      0.17556  0.46442
Losses of out-of-sample forecasts:  2.5 
22 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01884  0.00255   -7.38968  0.00000
df_in[, -1]Diff_Index_1 -0.00112  0.00026   -4.24591  0.00002
df_in[, -1]Lag_1        -0.43929  0.15223   -2.88559  0.00399
Losses of out-of-sample forecasts:  4.5 
51 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value     Std. Error t value   Pr(>|t|) 
(Intercept)                   -0.02310   0.00183  -12.60560   0.00000
df_in[, -1]Diff_Index_1        0.00233   0.00161    1.44814   0.14789
df_in[, -1]Lag_1               1.16340   0.61281    1.89846   0.05792
df_in[, -1]Pos_Val_for_Lag_1   0.00080   0.00265    0.30331   0.76172
Losses of out-of-sample forecasts:  1.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04983222

$rect$left
[1] -14.36

$rect$top
[1] 0.02691495


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.021931725  0.016948503  0.011965282  0.006982060  0.001998838 -0.002984383 -0.007967605 -0.012950826 -0.017934048

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.09 0.098 0.085 0.087 0.078 0.082 0.078 0.077
VaR Breaks (%) 0.02 0.020 0.028 0.016 0.012 0.020 0.012 0.004
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 5 6
MV CAViaR + SAV 1 1
MV CAViaR + AS 1 1
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2016_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_5pc_2016_glob_etf.csv", uv_list = var_5pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
14 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01315   0.00074  -17.67282   0.00000
DF1          -0.00035   0.00017   -2.07207   0.03852
DF2           0.00112   0.00072    1.56245   0.11850
DF3          -0.00146   0.00066   -2.22114   0.02657
DF4           0.00247   0.00087    2.83468   0.00468
DF5           0.00055   0.00124    0.44213   0.65849
DF6          -0.00167   0.00106   -1.57484   0.11561
MSE of out-of-sample forecasts:  0.000263843 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01374     -0.01507 -0.01331
df_in[, -1]Diff_Index_1  0.00036     -0.00042  0.00117
df_in[, -1]Lag_1         0.40008      0.05636  0.70099
df_in[, -1]Lag_2         0.30529      0.21109  0.37267
df_in[, -1]Lag_3         0.13196     -0.00286  0.26939
df_in[, -1]Lag_4         0.04246     -0.05779  0.20765
df_in[, -1]Lag_5         0.01676     -0.07849  0.26369
df_in[, -1]Lag_6         0.26909      0.15276  0.34297
df_in[, -1]Lag_7         0.11785     -0.03725  0.19480
df_in[, -1]Lag_8         0.14539      0.07363  0.24445
df_in[, -1]Lag_9         0.03498     -0.04503  0.11429
df_in[, -1]Lag_10        0.15285      0.03763  0.23633
Losses of out-of-sample forecasts:  2.5 
1 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01137   0.00110  -10.31899   0.00000
df_in[, -1]Diff_Index_1  -0.00053   0.00039   -1.35634   0.17530
df_in[, -1]Diff_Index_2   0.00086   0.00110    0.77933   0.43597
df_in[, -1]Diff_Index_3  -0.00170   0.00120   -1.42273   0.15513
df_in[, -1]Lag_1         -0.36523   0.19177   -1.90457   0.05712
Losses of out-of-sample forecasts:  0.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01471     -0.01927 -0.00905
df_in[, -1]Diff_Index_1      -0.00010     -0.00150  0.00293
df_in[, -1]Diff_Index_2       0.00069     -0.00019  0.00159
df_in[, -1]Diff_Index_3      -0.00130     -0.00216  0.00110
df_in[, -1]Diff_Index_4       0.00225      0.00023  0.00452
df_in[, -1]Diff_Index_5       0.00096     -0.00100  0.00191
df_in[, -1]Lag_1              0.04327     -0.29731  1.00357
df_in[, -1]Lag_2              0.28933      0.12473  0.42700
df_in[, -1]Lag_3              0.00967     -0.14361  0.30124
df_in[, -1]Lag_4             -0.04899     -0.14113  0.12914
df_in[, -1]Lag_5              0.01524     -0.13508  0.30208
df_in[, -1]Lag_6              0.40978      0.18806  0.48960
df_in[, -1]Pos_Val_for_Lag_1  0.00304     -0.00047  0.00626
df_in[, -1]Pos_Val_for_Lag_2 -0.00016     -0.00285  0.00307
df_in[, -1]Pos_Val_for_Lag_3  0.00078     -0.00479  0.00387
df_in[, -1]Pos_Val_for_Lag_4  0.00246     -0.00032  0.00457
df_in[, -1]Pos_Val_for_Lag_5 -0.00005     -0.00311  0.00206
df_in[, -1]Pos_Val_for_Lag_6 -0.00334     -0.00620  0.00234
Losses of out-of-sample forecasts:  7.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.0431767

$rect$left
[1] -14.36

$rect$top
[1] 0.02653699


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0222193182  0.0179016485  0.0135839788  0.0092663092  0.0049486395  0.0006309698 -0.0036866999 -0.0080043696
[9] -0.0123220393

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.279 0.261 0.253 0.291 0.238 0.238 0.234 0.264
VaR Breaks (%) 0.068 0.040 0.048 0.080 0.032 0.040 0.028 0.032
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 6 NA
MV CAViaR + AR 1 10
MV CAViaR + SAV 3 1
MV CAViaR + AS 5 6
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2016_glob_etf = cav_simul(c("JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 10, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_glob_ETF_runs/", filename = "var_10pc_2016_glob_etf.csv", uv_list = var_10pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.00929   0.00063  -14.70339   0.00000
DF1          -0.00023   0.00020   -1.16412   0.24465
DF2           0.00113   0.00077    1.47668   0.14008
DF3          -0.00059   0.00080   -0.73771   0.46086
DF4           0.00207   0.00119    1.73190   0.08360
DF5          -0.00047   0.00119   -0.39607   0.69214
MSE of out-of-sample forecasts:  0.0001688422 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01026     -0.01140 -0.00901
df_in[, -1]Diff_Index_1  0.00020     -0.00087  0.00115
df_in[, -1]Diff_Index_2  0.00037     -0.00041  0.00164
df_in[, -1]Lag_1         0.25373     -0.04926  0.54857
df_in[, -1]Lag_2         0.25187      0.13606  0.31247
df_in[, -1]Lag_3         0.08200     -0.02791  0.15546
df_in[, -1]Lag_4         0.06537     -0.04564  0.18875
df_in[, -1]Lag_5        -0.00357     -0.15532  0.12485
df_in[, -1]Lag_6         0.18530      0.05242  0.25480
df_in[, -1]Lag_7         0.03603     -0.01976  0.15686
df_in[, -1]Lag_8         0.09155     -0.00413  0.22439
Losses of out-of-sample forecasts:  1 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00812  0.00085   -9.59319  0.00000
df_in[, -1]Diff_Index_1 -0.00030  0.00031   -0.95899  0.33780
df_in[, -1]Lag_1        -0.15812  0.15902   -0.99436  0.32029
Losses of out-of-sample forecasts:  4 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01270     -0.01771 -0.00962
df_in[, -1]Diff_Index_1       0.00052     -0.00194  0.00158
df_in[, -1]Diff_Index_2       0.00057     -0.00084  0.00129
df_in[, -1]Diff_Index_3      -0.00046     -0.00208  0.00116
df_in[, -1]Diff_Index_4       0.00211     -0.00084  0.00380
df_in[, -1]Diff_Index_5       0.00000     -0.00192  0.00244
df_in[, -1]Diff_Index_6      -0.00004     -0.00229  0.00171
df_in[, -1]Diff_Index_7       0.00097     -0.00188  0.00363
df_in[, -1]Diff_Index_8      -0.00116     -0.00322  0.00134
df_in[, -1]Lag_1              0.15725     -0.54429  0.58623
df_in[, -1]Lag_2              0.16615     -0.00207  0.38225
df_in[, -1]Lag_3              0.03428     -0.17925  0.14864
df_in[, -1]Lag_4              0.05763     -0.13064  0.23049
df_in[, -1]Lag_5              0.08551     -0.08859  0.19704
df_in[, -1]Lag_6              0.21061      0.02129  0.38580
df_in[, -1]Lag_7              0.03749     -0.20051  0.19897
df_in[, -1]Lag_8              0.11146     -0.11115  0.32255
df_in[, -1]Lag_9             -0.11007     -0.26717 -0.01017
df_in[, -1]Pos_Val_for_Lag_1  0.00281     -0.00039  0.00561
df_in[, -1]Pos_Val_for_Lag_2  0.00147     -0.00131  0.00361
df_in[, -1]Pos_Val_for_Lag_3  0.00043     -0.00255  0.00289
df_in[, -1]Pos_Val_for_Lag_4  0.00051     -0.00184  0.00440
df_in[, -1]Pos_Val_for_Lag_5 -0.00218     -0.00452  0.00140
df_in[, -1]Pos_Val_for_Lag_6 -0.00133     -0.00413  0.00141
df_in[, -1]Pos_Val_for_Lag_7  0.00010     -0.00213  0.00342
df_in[, -1]Pos_Val_for_Lag_8  0.00065     -0.00305  0.00264
df_in[, -1]Pos_Val_for_Lag_9  0.00294     -0.00047  0.00585
Losses of out-of-sample forecasts:  3 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04272322

$rect$left
[1] -14.36

$rect$top
[1] 0.02651124


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.022238914  0.017966592  0.013694270  0.009421948  0.005149626  0.000877304 -0.003395018 -0.007667340 -0.011939662

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.419 0.400 0.400 0.442 0.370 0.373 0.368 0.414
VaR Breaks (%) 0.104 0.096 0.116 0.112 0.088 0.092 0.096 0.072
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 5 NA
MV CAViaR + AR 2 8
MV CAViaR + SAV 1 1
MV CAViaR + AS 8 9
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

Commodity ETFs

Bond ETFs

# iShares 1-3 Year Treasury Bond Fund (SHY)
# iShares 7-10 Year Treasury Bond Fund (IEF)
# iShares 20+ Year Treasury Bond Fund (TLT)
# iShares iBoxx $ Investment Grade Corporate Bond ETF (LQD)
# 1%, 5%, 10% VaR - 2016 - 4th set of predictors
var_1pc_2016_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_1pc_2016_bond_etf.csv", uv_list = var_1pc_2016_usetf[[1]])
4 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) -0.02205  0.00234   -9.41549  0.00000
DF1          0.00045  0.00087    0.51465  0.60691
DF2          0.00022  0.00234    0.09444  0.92478
DF3          0.00342  0.00318    1.07687  0.28180
MSE of out-of-sample forecasts:  0.0005746669 
1 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.02207   0.00126  -17.57769   0.00000
df_in[, -1]Diff_Index_1  -0.00001   0.00067   -0.01867   0.98511
df_in[, -1]Lag_1          0.37090   0.13901    2.66819   0.00775
df_in[, -1]Lag_2          0.19559   0.12415    1.57552   0.11546
df_in[, -1]Lag_3         -0.01660   0.13759   -0.12069   0.90396
df_in[, -1]Lag_4         -0.12763   0.13933   -0.91604   0.35987
Losses of out-of-sample forecasts:  3.5 
16 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01750  0.00205   -8.52329  0.00000
df_in[, -1]Diff_Index_1 -0.00013  0.00070   -0.19193  0.84783
df_in[, -1]Diff_Index_2  0.00015  0.00157    0.09315  0.92580
df_in[, -1]Diff_Index_3  0.00310  0.00294    1.05685  0.29084
df_in[, -1]Lag_1        -0.53340  0.26002   -2.05140  0.04049
Losses of out-of-sample forecasts:  4.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value     Std. Error t value   Pr(>|t|) 
(Intercept)                   -0.02143   0.00167  -12.83818   0.00000
df_in[, -1]Diff_Index_1       -0.00032   0.00043   -0.74322   0.45753
df_in[, -1]Lag_1               0.27486   0.14716    1.86775   0.06209
df_in[, -1]Lag_2               0.44754   0.17538    2.55188   0.01086
df_in[, -1]Pos_Val_for_Lag_1   0.00287   0.00251    1.14611   0.25202
df_in[, -1]Pos_Val_for_Lag_2  -0.00502   0.00261   -1.92246   0.05483
Losses of out-of-sample forecasts:  1.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04983222

$rect$left
[1] -14.36

$rect$top
[1] 0.02691495


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.021931725  0.016948503  0.011965282  0.006982060  0.001998838 -0.002984383 -0.007967605 -0.012950826 -0.017934048

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.076 0.089 0.108 0.085 0.078 0.082 0.078 0.077
VaR Breaks (%) 0.012 0.024 0.028 0.016 0.012 0.020 0.012 0.004
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 3 NA
MV CAViaR + AR 1 4
MV CAViaR + SAV 3 1
MV CAViaR + AS 1 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2016_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_5pc_2016_bond_etf.csv", uv_list = var_5pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01400   0.00071  -19.69635   0.00000
DF            0.00047   0.00036    1.30458   0.19233
MSE of out-of-sample forecasts:  0.0002793821 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01366     -0.01531 -0.01310
df_in[, -1]Diff_Index_1  0.00008     -0.00060  0.00044
df_in[, -1]Lag_1         0.28870      0.10608  0.48054
df_in[, -1]Lag_2         0.30710      0.20097  0.41416
df_in[, -1]Lag_3         0.14355      0.02252  0.27186
df_in[, -1]Lag_4         0.04361     -0.03756  0.23869
df_in[, -1]Lag_5         0.02775     -0.09951  0.23851
df_in[, -1]Lag_6         0.29163      0.16327  0.32518
df_in[, -1]Lag_7         0.09379     -0.03094  0.19469
df_in[, -1]Lag_8         0.14664      0.05568  0.25962
df_in[, -1]Lag_9         0.03737     -0.05821  0.11742
df_in[, -1]Lag_10        0.15645      0.01838  0.25669
Losses of out-of-sample forecasts:  1.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01099  0.00117   -9.42229  0.00000
df_in[, -1]Diff_Index_1  0.00022  0.00047    0.46226  0.64400
df_in[, -1]Diff_Index_2 -0.00116  0.00118   -0.99002  0.32240
df_in[, -1]Diff_Index_3  0.00160  0.00189    0.84489  0.39837
df_in[, -1]Lag_1        -0.42652  0.19369   -2.20201  0.02789
Losses of out-of-sample forecasts:  2.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01409     -0.02004 -0.00913
df_in[, -1]Diff_Index_1       0.00029     -0.00054  0.00078
df_in[, -1]Lag_1              0.19288     -0.06301  0.36294
df_in[, -1]Lag_2              0.28660      0.14263  0.48033
df_in[, -1]Lag_3              0.14885     -0.24003  0.31370
df_in[, -1]Lag_4             -0.10734     -0.21265  0.21420
df_in[, -1]Lag_5              0.06413     -0.08737  0.28728
df_in[, -1]Lag_6              0.38461      0.18894  0.51774
df_in[, -1]Pos_Val_for_Lag_1  0.00129     -0.00148  0.00590
df_in[, -1]Pos_Val_for_Lag_2  0.00054     -0.00276  0.00470
df_in[, -1]Pos_Val_for_Lag_3  0.00032     -0.00430  0.00424
df_in[, -1]Pos_Val_for_Lag_4  0.00175     -0.00171  0.00417
df_in[, -1]Pos_Val_for_Lag_5 -0.00033     -0.00398  0.00261
df_in[, -1]Pos_Val_for_Lag_6 -0.00274     -0.00592  0.00233
Losses of out-of-sample forecasts:  2.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.0431767

$rect$left
[1] -14.36

$rect$top
[1] 0.02653699


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0222193182  0.0179016485  0.0135839788  0.0092663092  0.0049486395  0.0006309698 -0.0036866999 -0.0080043696
[9] -0.0123220393

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.257 0.265 0.273 0.273 0.238 0.238 0.234 0.264
VaR Breaks (%) 0.040 0.044 0.060 0.060 0.032 0.040 0.028 0.032
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 1 NA
MV CAViaR + AR 1 10
MV CAViaR + SAV 3 1
MV CAViaR + AS 1 6
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2016_bond_etf = cav_simul(c("SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 4, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_bond_ETF_runs/", filename = "var_10pc_2016_bond_etf.csv", uv_list = var_10pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
1 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.00931   0.00056  -16.60829   0.00000
DF1           0.00040   0.00027    1.47464   0.14062
DF2          -0.00080   0.00054   -1.46851   0.14228
MSE of out-of-sample forecasts:  0.0001662973 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01011     -0.01128 -0.00900
df_in[, -1]Diff_Index_1  0.00018     -0.00026  0.00052
df_in[, -1]Lag_1         0.18521      0.08150  0.33161
df_in[, -1]Lag_2         0.26439      0.13120  0.32580
df_in[, -1]Lag_3         0.08029     -0.02552  0.16127
df_in[, -1]Lag_4         0.05478     -0.04600  0.18811
df_in[, -1]Lag_5        -0.01363     -0.14378  0.12645
df_in[, -1]Lag_6         0.18187      0.06703  0.25517
df_in[, -1]Lag_7         0.05736     -0.03102  0.14850
df_in[, -1]Lag_8         0.09374      0.00104  0.23255
Losses of out-of-sample forecasts:  1 
1 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00841  0.00093   -9.04509  0.00000
df_in[, -1]Diff_Index_1  0.00020  0.00032    0.62986  0.52893
df_in[, -1]Diff_Index_2 -0.00049  0.00047   -1.05532  0.29154
df_in[, -1]Diff_Index_3  0.00047  0.00156    0.30320  0.76180
df_in[, -1]Lag_1        -0.14686  0.16460   -0.89224  0.37248
Losses of out-of-sample forecasts:  2 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01258     -0.01538 -0.00996
df_in[, -1]Diff_Index_1      -0.00005     -0.00026  0.00054
df_in[, -1]Lag_1              0.06469     -0.10201  0.19541
df_in[, -1]Lag_2              0.23327      0.07823  0.32500
df_in[, -1]Lag_3             -0.04484     -0.14427  0.11826
df_in[, -1]Lag_4             -0.04823     -0.15861  0.12658
df_in[, -1]Lag_5              0.01240     -0.11353  0.15904
df_in[, -1]Lag_6              0.27568      0.05761  0.42770
df_in[, -1]Pos_Val_for_Lag_1  0.00257      0.00023  0.00466
df_in[, -1]Pos_Val_for_Lag_2  0.00120     -0.00089  0.00303
df_in[, -1]Pos_Val_for_Lag_3  0.00128     -0.00051  0.00354
df_in[, -1]Pos_Val_for_Lag_4  0.00247     -0.00030  0.00417
df_in[, -1]Pos_Val_for_Lag_5 -0.00066     -0.00212  0.00160
df_in[, -1]Pos_Val_for_Lag_6 -0.00230     -0.00502  0.00137
Losses of out-of-sample forecasts:  4 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04272322

$rect$left
[1] -14.36

$rect$top
[1] 0.02651124


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.022238914  0.017966592  0.013694270  0.009421948  0.005149626  0.000877304 -0.003395018 -0.007667340 -0.011939662

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.402 0.395 0.397 0.415 0.370 0.373 0.368 0.414
VaR Breaks (%) 0.100 0.096 0.108 0.084 0.088 0.092 0.096 0.072
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 2 NA
MV CAViaR + AR 1 8
MV CAViaR + SAV 3 1
MV CAViaR + AS 1 6
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

All ETFs

# 1%, 5%, 10% VaR - 2016 - 5th set of predictors
var_1pc_2016_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10, tau = 0.01, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_1pc_2016_all_etf.csv", uv_list = var_1pc_2016_usetf[[1]])

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.01

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.02234   0.00185  -12.05408   0.00000
DF1          -0.00084   0.00022   -3.76078   0.00018
DF2          -0.00038   0.00083   -0.46386   0.64285
MSE of out-of-sample forecasts:  0.0006047689 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.02112     -0.02359 -0.01983
df_in[, -1]Diff_Index_1  0.00111     -0.00217  0.00389
df_in[, -1]Lag_1         0.83127     -0.45737  1.93173
df_in[, -1]Lag_2         0.26852      0.16839  0.39804
df_in[, -1]Lag_3         0.06855      0.01357  0.48397
df_in[, -1]Lag_4        -0.03267     -0.08036  0.25096
df_in[, -1]Lag_5        -0.10908     -0.19677  0.48500
df_in[, -1]Lag_6         0.24394      0.10735  0.52045
df_in[, -1]Lag_7        -0.07198     -0.18991  0.26594
Losses of out-of-sample forecasts:  2.5 
14 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.01797  0.00221   -8.13714  0.00000
df_in[, -1]Diff_Index_1 -0.00064  0.00015   -4.31979  0.00002
df_in[, -1]Diff_Index_2  0.00038  0.00062    0.60547  0.54501
df_in[, -1]Diff_Index_3 -0.00034  0.00104   -0.33138  0.74043
df_in[, -1]Lag_1        -0.51187  0.13601   -3.76352  0.00018
Losses of out-of-sample forecasts:  4.5 
57 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.01

Coefficients:
                             Value     Std. Error t value   Pr(>|t|) 
(Intercept)                   -0.02255   0.00071  -31.57907   0.00000
df_in[, -1]Diff_Index_1        0.00121   0.00067    1.80340   0.07163
df_in[, -1]Diff_Index_2        0.00011   0.00034    0.32333   0.74652
df_in[, -1]Lag_1               0.78916   0.35087    2.24914   0.02472
df_in[, -1]Lag_2               0.41070   0.11173    3.67583   0.00025
df_in[, -1]Pos_Val_for_Lag_1   0.00386   0.00164    2.35475   0.01873
df_in[, -1]Pos_Val_for_Lag_2  -0.00372   0.00212   -1.75174   0.08013
Losses of out-of-sample forecasts:  1.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04983222

$rect$left
[1] -14.36

$rect$top
[1] 0.02691495


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.021931725  0.016948503  0.011965282  0.006982060  0.001998838 -0.002984383 -0.007967605 -0.012950826 -0.017934048

Comparison of VaR Methods for a 1% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.091 0.097 0.092 0.083 0.078 0.082 0.078 0.077
VaR Breaks (%) 0.020 0.020 0.028 0.016 0.012 0.020 0.012 0.004
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 2 NA
MV CAViaR + AR 1 7
MV CAViaR + SAV 3 1
MV CAViaR + AS 2 2
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_5pc_2016_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.05, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_5pc_2016_all_etf.csv", uv_list = var_5pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
1 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.05

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.01309   0.00077  -17.04210   0.00000
DF1          -0.00027   0.00019   -1.38288   0.16701
DF2          -0.00051   0.00042   -1.22310   0.22158
DF3           0.00083   0.00073    1.13112   0.25828
MSE of out-of-sample forecasts:  0.0002538596 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01357     -0.01519 -0.01322
df_in[, -1]Diff_Index_1  0.00011     -0.00112  0.00136
df_in[, -1]Diff_Index_2 -0.00011     -0.00053  0.00050
df_in[, -1]Lag_1         0.34668     -0.16161  0.82827
df_in[, -1]Lag_2         0.30281      0.19422  0.38168
df_in[, -1]Lag_3         0.15397      0.00868  0.26978
df_in[, -1]Lag_4         0.03198     -0.05822  0.20686
df_in[, -1]Lag_5         0.02890     -0.08324  0.26709
df_in[, -1]Lag_6         0.29470      0.15975  0.32352
df_in[, -1]Lag_7         0.09002     -0.02397  0.19186
df_in[, -1]Lag_8         0.14362      0.07040  0.26363
df_in[, -1]Lag_9         0.04237     -0.04614  0.12150
df_in[, -1]Lag_10        0.15361      0.02034  0.24783
Losses of out-of-sample forecasts:  0.5 
9 non-positive fis

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                        Value     Std. Error t value   Pr(>|t|) 
(Intercept)              -0.01070   0.00093  -11.51057   0.00000
df_in[, -1]Diff_Index_1  -0.00059   0.00020   -2.94102   0.00335
df_in[, -1]Diff_Index_2  -0.00035   0.00030   -1.17700   0.23947
df_in[, -1]Diff_Index_3   0.00016   0.00051    0.31184   0.75523
df_in[, -1]Diff_Index_4  -0.00142   0.00048   -2.93721   0.00339
df_in[, -1]Diff_Index_5   0.00204   0.00076    2.69174   0.00723
df_in[, -1]Diff_Index_6   0.00000   0.00073   -0.00048   0.99961
df_in[, -1]Diff_Index_7  -0.00056   0.00091   -0.62125   0.53458
df_in[, -1]Lag_1         -0.35194   0.13127   -2.68108   0.00746
Losses of out-of-sample forecasts:  10.5 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.05

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01553     -0.02181 -0.00795
df_in[, -1]Diff_Index_1       0.00098     -0.00069  0.00199
df_in[, -1]Diff_Index_2      -0.00038     -0.00084  0.00053
df_in[, -1]Lag_1              0.65991     -0.10562  1.17989
df_in[, -1]Lag_2              0.29491      0.06700  0.44383
df_in[, -1]Lag_3              0.01720     -0.23216  0.30446
df_in[, -1]Lag_4             -0.08291     -0.20140  0.19015
df_in[, -1]Lag_5              0.13747     -0.08759  0.32049
df_in[, -1]Lag_6              0.32970      0.13119  0.48868
df_in[, -1]Lag_7              0.00896     -0.15117  0.27091
df_in[, -1]Pos_Val_for_Lag_1  0.00134     -0.00146  0.00799
df_in[, -1]Pos_Val_for_Lag_2  0.00044     -0.00319  0.00463
df_in[, -1]Pos_Val_for_Lag_3  0.00163     -0.00482  0.00469
df_in[, -1]Pos_Val_for_Lag_4  0.00271     -0.00235  0.00468
df_in[, -1]Pos_Val_for_Lag_5 -0.00110     -0.00385  0.00233
df_in[, -1]Pos_Val_for_Lag_6 -0.00250     -0.00664  0.00199
df_in[, -1]Pos_Val_for_Lag_7  0.00112     -0.00375  0.00299
Losses of out-of-sample forecasts:  1.5 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.0431767

$rect$left
[1] -14.36

$rect$top
[1] 0.02653699


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.0222193182  0.0179016485  0.0135839788  0.0092663092  0.0049486395  0.0006309698 -0.0036866999 -0.0080043696
[9] -0.0123220393

Comparison of VaR Methods for a 5% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.26 0.265 0.283 0.272 0.238 0.238 0.234 0.264
VaR Breaks (%) 0.06 0.048 0.092 0.056 0.032 0.040 0.028 0.032
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 3 NA
MV CAViaR + AR 2 10
MV CAViaR + SAV 7 1
MV CAViaR + AS 2 7
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

var_10pc_2016_all_etf = cav_simul(c("XLU", "XLP", "XLV", "XLK", "XLY", "XLI", "XLF", "XLB", "XLE", "JXI", "KXI", "IXJ", "IXP", "IXN", "RXI", "EXI", "IXG", "MXI", "IXC", "SHY", "IEF", "TLT", "LQD"), resp_var = "SPY", start_date = "2012-01-01", end_date = "2016-12-31", nval = 250, ntest = 250, low_m = 1, high_m = 23, low_p = 1, high_p = 10,tau = 0.10, print_mdl = 1, print_mp = 1, path = "/Users/stevenmoen/Documents/GitHub/CAViaR_MS_thesis/Data_Export/SPY_all_ETF_runs/", filename = "var_10pc_2016_all_etf.csv", uv_list = var_10pc_2016_usetf[[1]])
Solution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonuniqueSolution may be nonunique
1 non-positive fis

Call: rq(formula = y1 ~ DF, tau = tau)

tau: [1] 0.1

Coefficients:
            Value     Std. Error t value   Pr(>|t|) 
(Intercept)  -0.00942   0.00059  -15.88564   0.00000
DF1          -0.00024   0.00015   -1.64042   0.10123
DF2          -0.00022   0.00028   -0.78341   0.43357
DF3           0.00038   0.00053    0.72350   0.46954
DF4          -0.00087   0.00057   -1.52998   0.12634
DF5           0.00151   0.00076    1.98982   0.04688
MSE of out-of-sample forecasts:  0.000177558 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        coefficients lower bd upper bd
(Intercept)             -0.01005     -0.01158 -0.00898
df_in[, -1]Diff_Index_1 -0.00004     -0.00096  0.00078
df_in[, -1]Lag_1         0.17904     -0.23390  0.55643
df_in[, -1]Lag_2         0.25256      0.12710  0.33094
df_in[, -1]Lag_3         0.07882     -0.02445  0.15958
df_in[, -1]Lag_4         0.07518     -0.02885  0.19253
df_in[, -1]Lag_5        -0.01381     -0.14292  0.12539
df_in[, -1]Lag_6         0.17373      0.06698  0.26343
df_in[, -1]Lag_7         0.04004     -0.03298  0.15966
df_in[, -1]Lag_8         0.09626      0.00053  0.23184
Losses of out-of-sample forecasts:  1 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                        Value    Std. Error t value  Pr(>|t|)
(Intercept)             -0.00823  0.00084   -9.75574  0.00000
df_in[, -1]Diff_Index_1 -0.00026  0.00023   -1.12275  0.26181
df_in[, -1]Lag_1        -0.14456  0.15687   -0.92153  0.35700
Losses of out-of-sample forecasts:  3 

Call: rq(formula = df_in[, 1] ~ df_in[, -1], tau = tau)

tau: [1] 0.1

Coefficients:
                             coefficients lower bd upper bd
(Intercept)                  -0.01236     -0.01613 -0.01045
df_in[, -1]Diff_Index_1      -0.00053     -0.00192  0.00119
df_in[, -1]Diff_Index_2      -0.00031     -0.00052  0.00010
df_in[, -1]Diff_Index_3       0.00020     -0.00055  0.00104
df_in[, -1]Diff_Index_4      -0.00039     -0.00118  0.00036
df_in[, -1]Diff_Index_5       0.00165      0.00077  0.00289
df_in[, -1]Lag_1             -0.21354     -0.86876  0.54569
df_in[, -1]Lag_2              0.20700     -0.01162  0.31585
df_in[, -1]Lag_3             -0.04188     -0.19397  0.05979
df_in[, -1]Lag_4              0.00460     -0.14406  0.18840
df_in[, -1]Lag_5              0.05161     -0.06380  0.17220
df_in[, -1]Lag_6              0.24806      0.12101  0.38601
df_in[, -1]Pos_Val_for_Lag_1  0.00313      0.00037  0.00496
df_in[, -1]Pos_Val_for_Lag_2  0.00152     -0.00171  0.00385
df_in[, -1]Pos_Val_for_Lag_3  0.00109     -0.00035  0.00370
df_in[, -1]Pos_Val_for_Lag_4  0.00185     -0.00099  0.00433
df_in[, -1]Pos_Val_for_Lag_5 -0.00098     -0.00318  0.00106
df_in[, -1]Pos_Val_for_Lag_6 -0.00227     -0.00457  0.00085
Losses of out-of-sample forecasts:  6.938894e-16 
[1] "NOTE: There are 0 NA(s) in the dataset"
[1] "WARNING: There were missing values in the plot matrix."
$rect
$rect$w
[1] 133.7436

$rect$h
[1] 0.04272322

$rect$left
[1] -14.36

$rect$top
[1] 0.02651124


$text
$text$x
[1] 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098 24.08098

$text$y
[1]  0.022238914  0.017966592  0.013694270  0.009421948  0.005149626  0.000877304 -0.003395018 -0.007667340 -0.011939662

Comparison of VaR Methods for a 10% VaR
MV CAViaR MV CAViaR + AR MV CAViaR + SAV MV CAViaR + AS SAV Abs. Slope Ind. GARCH Adaptive
Losses 0.425 0.397 0.401 0.441 0.370 0.373 0.368 0.414
VaR Breaks (%) 0.096 0.096 0.112 0.100 0.088 0.092 0.096 0.072
Note:
Calculated using 250 trading days from 2016-01-06 to 2016-12-30
Optimal Number of Diffusion Indices (m) and Lags (p) for Different Models
Optimal m Optimal p
MV CAViaR 5 NA
MV CAViaR + AR 1 8
MV CAViaR + SAV 1 1
MV CAViaR + AS 5 6
Note:
The MV CAViaR model doesn't have an optimal value for p because there are no AR lags in the model

JUNK CODE

Problem solving on 4.25.2020 to see why commodities ETFs code had a problem.

head(comm_df)
           SPY.Adjusted DBA.Adjusted DBC.Adjusted DBE.Adjusted DBB.Adjusted
2007-01-08     107.6953     23.58119     21.56152     22.31349     21.43794
2007-01-09     107.6038     23.54349     21.67353     22.45185     21.14860
2007-01-10     107.9623     23.24189     21.48685     22.58099     21.04010
2007-01-11     108.4352     23.30787     21.16950     21.94452     21.89907
2007-01-12     109.2590     23.65659     21.14149     21.22502     22.18840
2007-01-16     109.0454     25.54158     21.63620     21.61244     21.80865
LS0tCnRpdGxlOiAiTS5TLiBUaGVzaXMgLSBGaXJzdCBEcmFmdCIKYXV0aG9yOiAiU3RldmVuIE1vZW4iCmRhdGU6ICJGcmlkYXksIEphbnVhcnkgMjR0aCwgMjAyMCIKb3V0cHV0OgogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKLS0tCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04LCBmaWcucGF0aD0nRmlncy8nLAogICAgICAgICAgICAgICAgICAgICAgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgY2FjaGUgPSBUUlVFKQpgYGAKCiMgQmFja2dyb3VuZCBhbmQgSW50cm9kdWN0aW9uCgpWYWx1ZS1hdC1yaXNrIG1vZGVsaW5nLCBvciBWYVIsIGlzIGEgY29tbW9ubHkgdXNlZCB0b29sIHRvIG1lYXN1cmUgcmlza2luZXNzIGluIGEgZmluYW5jaWFsIGluc3RpdHV0aW9uLiBDQVZpYVIgd2FzIGEgbmV3IHRha2Ugb24gcmlzayBtb2RlbGluZyBvcmlnaW5hbGx5IHByb3Bvc2VkIGJ5IFJvYmVydCBFbmdsZSBhbmQgU2ltb25lIE1hbmdhbmVsbGkgaW4gMjAwNCB3aGljaCBidWlsZHMgdXBvbiB0aGUgbGl0ZXJhdHVyZSBvZiBtb2RlbGluZyByZWdyZXNzaW9uIHF1YW50aWxlcyBpbiBzZXR0aW5ncyB3aGljaCBhcmUgZXNzZW50aWFsLiAKCmFuZCBhZ3JlZSB3aXRoIHRoZSBiYXNpYyBwcmVtaXNlIG9mIHRoZSBDQVZpYVIgcGFwZXIgdGhhdCBtYW55IG9mIHRoZSBub25wYXJhbWV0cmljIGhpc3RvcmljYWwgc2ltdWxhdGlvbiBtZXRob2RzIGRvbuKAmXQgaGF2ZSBhdHRyYWN0aXZlIHN0YXRpc3RpY2FsIHByb3BlcnRpZXMgYW5kIGFyZSBjaG9zZW4gbW9yZSBmb3IgZXhwZXJpbWVudGFsIHF1YWxpdGllcyAoYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSAxOTk4IHBhcGVyIGJ5IEJvdWRvdWtoLCBSaWNoYXJkc29uLCBhbmQgV2hpdGVsYXcgY2l0ZWQgYnkgRW5nbGUgd2hpY2ggdXNlcyBhIHNlbWlwYXJhbWV0cmljICJoeWJyaWQiIGFwcHJvYWNoKQpJIHRoaW5rIHRyeWluZyB0byB0aGluayB0b28gbmFycm93bHkgYWJvdXQgVmFSIGlzbid0IGEgdmVyeSBpbnRlcmVzdGluZyBzdGF0aXN0aWNhbCBwcm9ibGVtIC0gaW4gYSBzZW5zZSwgVmFSIGlzIGp1c3QgYSB1c2VmdWwgc3VtbWFyaXphdGlvbiBvZiBxdWFudGlsZSByaXNrIHB1dCBpbnRvIGRvbGxhciBmaWd1cmVzIGZvciBlYXN5IGNvbnN1bXB0aW9uCkluIG15IG9waW5pb24sIHRoZSBtb3N0IGludGVyZXN0aW5nIHF1ZXN0aW9uIGluIHRoZSBDQVZpYVIgcGFwZXIgaXNu4oCZdCBWYVIgcGVyIHNlLCBpdOKAmXMgdGVzdGluZyB0aGVpciB0aGVvcmVtcyB1bmRlciByZWxheGF0aW9ucyBvZiB0aGVpciBhc3N1bXB0aW9ucyB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGVpciBhcHByb2FjaCB0byBleHRyZW1lIHZhbHVlIHRoZW9yeS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBhbmFseXNlcyBjYXRjaCBteSBleWU6CkhvdyBpbXBvcnRhbnQgaXMgdGhlIGFzc3VtcHRpb24gQzIgb24gcGFnZSAzNzQgb2YgdGhlIENBVklBUiBwYXBlciAod2hpY2ggdW5kZXJsaWVzIFRoZW9yZW0gMSBhYm91dCB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGVzdGltYXRvciBiZXRhIGhhdCk/IEl0IHN0YXRlcyB0aGF0ICJjb25kaXRpb25hbCBvbiBhbGwgb2YgdGhlIHBhc3QgaW5mb3JtYXRpb24uLi50aGUgZXJyb3IgdGVybXMgZm9ybSBhIHN0YXRpb25hcnkgcHJvY2VzcyIuIEl0IG1heSBiZSBhbiBpbnRlcmVzdGluZyB0ZXN0IHRvIHNlZSBob3cgbXVjaCBub25zdGF0aW9uYXJpdHkgYWZmZWN0cyB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGVzdGltYXRvciBiZXRhIGhhdC4gSSBjb3VsZCBkbyB0aGlzIHZpYSBzaW11bGF0aW9uIGFuZCBzZWUgaWYgdGhlcmUncyBhIGxvdCBvZiB2YWx1ZSBoZXJlLCB3aGljaCBtYXkgbGVhZCB1cyB0byBhIG1vcmUgZnVuZGFtZW50YWwgcmVzdWx0LgpJbiBteSBvcGluaW9uLCB0aGVvcmVtcyA0IGFuZCA1IChwLiAzNzEpIGFyZSB0aGUgbW9zdCBpbXBvcnRhbnQgaW4gdGhlIHBhcGVyIGJlY2F1c2UgdGhleSBzdGF0ZSB0aGF0IHRoZSBEUV9JUyBhbmQgRFFfT09TIHF1YW50aXRpZXMgYXJlIHBpdm90YWxzIGFzeW1wdG90aWNhbGx5LiBCdXQgaXQgYmVncyB0aGUgcXVlc3Rpb24gb2YgaG93IG11Y2ggZG9lcyB0aGF0IG1hdHRlciwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBWYVIsIHdoaWNoIGluIGFsbCBsaWtlbGlob29kIGlzIHdvcmtpbmcgd2l0aCBsaW1pdGVkIGRhdGE/IFRoZXJlZm9yZSwgaXQgc2VlbXMgdG8gbWUgdGhhdCB0aGUgRFE4IGFuZCBEUTkgYXNzdW1wdGlvbnMgYXJlIHRoZSBzaGFraWVzdCBhc3N1bXB0aW9ucyByZXF1aXJlZCBmb3IgdGhlb3JlbSA1LiBJdCBtaWdodCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IGZhciBvZmYgZnJvbSBhIGNoaS1zcXVhcmVkIGRpc3RyaWJ1dGlvbiByZWFsLXdvcmxkIGRhdGEgYWN0dWFsbHkgaXMuIFRoaXMgbWF5IGFsbG93IHVzIHRvIGRldmVsb3AgInJ1bGVzIG9mIHRodW1iIiBhYm91dCB0aGUgYWNjdXJhY3kgb2YgdGhlc2UgYXN5bXB0b3RpYyBkaXN0cmlidXRpb25zLgoKIyBNZXRob2RzIFVzZWQKCkZpbGwgaW4uCgojIERhdGEgVXNlZAoKIyBSZXN1bHRzCgojIENPREUKCiMjIExpYnJhcmllcwoKYGBge3J9CiMgUmVhZCBpbiByZWxldmFudCBsaWJyYXJpZXMKbGlicmFyeShtaWNyb2JlbmNobWFyaykKbGlicmFyeShkYXRhLnRhYmxlKQpsaWJyYXJ5KHF1YW50bW9kKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkodHNlcmllcykKbGlicmFyeSh6b28pCmxpYnJhcnkobWFncml0dHIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShmb3JtYXR0YWJsZSkKbGlicmFyeShxdWFudHJlZykKbGlicmFyeShNVFMpCmxpYnJhcnkocGxvdDNEKQoKIyBTZXQgdXAgd29ya2luZyBkaXJlY3RvcnkKIyBzZXR3ZCgifi9Eb2N1bWVudHMvR2l0SHViL0NhdmlhUiIpCgojIHNvdXJjZSgnY2F2aWFyX1NNLlInKQpzb3VyY2UoJ34vRG9jdW1lbnRzL0dpdEh1Yi9DYXZpYVIvY2F2aWFyX1NNLlInKQpgYGAKCmBgYHtyfQojIFRoaXMgY29kZSBiZWxvdyBpcyBmb3IgdXNlIGluIHRoZSBDQVZpYVIgc2VjdGlvbnMuCmBgYAoKYGBge3J9CiMgSGVyZSBpcyBjb2RlIHRoYXQgSSdsbCB3cmFwIHNvbWUgcGFydHMgaW4gdG8gYXZvaWQgc3VwZXJmbHVvdXMgb3V0cHV0CnF1aWV0IDwtIGZ1bmN0aW9uKHgpIHsgCiAgc2luayh0ZW1wZmlsZSgpKSAKICBvbi5leGl0KHNpbmsoKSkgCiAgaW52aXNpYmxlKGZvcmNlKHgpKSAKfSAKYGBgCgojIyBVbml2YXJpYXRlIENBVmlhUiBTZWN0aW9uCgpgYGB7cn0KIycgVGhpcyBpcyBhIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIGRhdGEgZm9yIHVzZSBpbiB0aGUgQ0FWaWFSIG1vZGVsCiMnCiMnIEBwYXJhbSBzeW1ib2wgLSBzeW1ib2wgdG8gcHVsbAojJyBAcGFyYW0gY29tcGxfY2FzZSAtIGRlZmF1bHRzIHRvIHRydWUuLi5vbmx5IGluY2x1ZGVzIGNvbXBsZXRlIGNhc2VzIGluIHRoZSBkYXRhCiMnIEBwYXJhbSBhZGpfY2xvc2UgLSB1c2UgYWRqdXN0ZWQgY2xvc2luZyBwcmljZXMuIERlZmF1bHQgaXMgeWVzLgojJyBAcGFyYW0gbG9nX3JldHVybiAtIHVzZSBsb2cgcmV0dXJuPyBEZWZhdWx0IGlzIHllcy4KIycKIycgQHJldHVybiAtIGEgZGF0YSBmcmFtZSB3aGljaCBjYW4gYmUgZmVkIGludG8gbGF0ZXIgZnVuY3Rpb25zCiMnIEBleHBvcnQKIycKIycgQGV4YW1wbGVzIC0gZGF0YV9wdWxsKCJTUFkiKQpkYXRhX3B1bGwgPSBmdW5jdGlvbihzeW1ib2wsIGNvbXBsX2Nhc2UgPSAxLCBhZGpfY2xvc2UgPSAxLCBsb2dfcmV0dXJuID0gMSwgc3RhcnRfZGF0ZSA9ICIxOTAwLTAxLTAxIiwgZW5kX2RhdGUgPSBTeXMuRGF0ZSgpKXsKICAjIFB1bGwgaW4gZGF0YSBmcm9tIHF1YW50bW9kCiAgcmVzcG9uc2VfcHVsbCA9IGdldFN5bWJvbHMoc3ltYm9sLCBhdXRvLmFzc2lnbiA9IEZBTFNFLCBmcm9tID0gc3RhcnRfZGF0ZSwgdG8gPSBlbmRfZGF0ZSkKICAjIEdldCBhZGp1c3RlZCBjbG9zaW5nIHByaWNlCiAgaWYgKGFkal9jbG9zZSA9PSBUUlVFKXsKICAgIGRmID0gQWQocmVzcG9uc2VfcHVsbCkKICB9IGVsc2UgewogICAgZGYgPSBDbChyZXNwb25zZV9wdWxsKQogIH0KICAjIFJldHVybiBjb21wbGV0ZSBjYXNlcyBvbmx5IAogIGlmIChjb21wbF9jYXNlID09IFRSVUUpewogICAgZGYgPSBkZltjb21wbGV0ZS5jYXNlcyhkZiksIF0KICB9IGVsc2V7CiAgICBkZiA9IGRmCiAgfQogICMgQ2FsY3VsYXRlIGxvZyByZXR1cm4gb2YgZGF0YQogIGlmIChsb2dfcmV0dXJuID09IFRSVUUpewogICAgbHIgPSBsb2coZGZbLDFdL3NoaWZ0KGRmWywxXSwgMSwgdHlwZSA9ICJsYWciKSkKICAgICMgQ29tYmluZSBkYXRhCiAgICBkZl9vdXQgPSBjYmluZChkZiwgbHIpCiAgICAjIFJlbmFtZSB0aGUgZGF0YSAKICAgIGNvbG5hbWVzKGRmX291dCkgPC0gYyhzeW09c3ltYm9sLCBwYXN0ZTAoc3ltYm9sLCAiX2xvZ19yZXR1cm4iKSkKICB9IGVsc2V7CiAgICBkZl9vdXQgPSBkZgogIH0KICAjIFJldHVybiBkYXRhCiAgcmV0dXJuKGRmX291dCkKfQoKCmBgYAoKYGBge3J9CiMnIFB1bGwgdGhlIGRhdGEgYW5kIHJ1biB0aGUgQ0FWaWFSIGZ1bmN0aW9uIG9uIGl0CiMnCiMnIEBwYXJhbSBpbnB1dF9kYXRhIC0gZGF0YSB0byB1c2UgaW4gdGhlIGZ1bmN0aW9uCiMnIEBwYXJhbSByYW5nZV9kYXRhIC0gcmFuZ2Ugb2YgdGhlIGRhdGEgdG8gdXNlCiMnCiMnIEByZXR1cm4gLSBhIGxpc3Qgb2YgdmFsdWVzIGZyb20gdGhlIGNhdmlhciBmdW5jdGlvbgojJyBAZXhwb3J0CiMnCiMnIEBleGFtcGxlcyAtIGNhdmlhcl9wdWxsKHNweSkKY2F2aWFyX3B1bGwgPSBmdW5jdGlvbihpbnB1dF9kYXRhLCByYW5nZV9kYXRhID0gKDI6ZGltKGlucHV0X2RhdGEpWzFdKSl7CiAgIyBSdW4gdGhlIGNhdmlhciBkYXRhCiAgY2F2aWFyIDwtIGNhdmlhck9wdGltKGlucHV0X2RhdGFbcmFuZ2VfZGF0YSwyXSkKICByZXR1cm4oY2F2aWFyKQp9CgpgYGAKCgpgYGB7cn0KIycgRnVuY3Rpb24gZm9yIHByb2R1Y2luZyByb2xsaW5nIHByZWRpY3Rpb25zCiMnIE1vZGVsIDEgPSBTeW1tZXRyaWMgQWJzb2x1dGUgVmFsdWUsIDIgPSBBc3ltbWV0cmljIHNsb3BlLCAzID0gSW5kaXJlY3QgR0FSQ0gsIDQgPSBBZGFwdGl2ZQojJwojJyBAcGFyYW0gaW5wdXRfZGF0YSAtIGlucHV0IGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgZnVuY3Rpb24KIycgQHBhcmFtIHJhbmdlX2RhdGEgLSByYW5nZSBvZiB0aGUgZGF0YSB0byBjb25zaWRlcgojJyBAcGFyYW0gbmZjc3QgLSBudW1iZXIgb2YgZm9yZWNhc3RzIHRvIG1ha2UKIycgQHBhcmFtIG1vZGVsIC0gbW9kZWwgdG8gdXNlIChpbnRlZ2VycyAxIHRocm91Z2ggNCkuIERlZmF1bHRzIHRvIDEuIAojJyBAcGFyYW0gbGV2ZWwgLSBsZXZlbCBvZiBzaWduaWZpY2FuY2UgdG8gdXNlLgojJyBAcGFyYW0gRyAtIGFyZ3VtZW50IGZvciB0aGUgayBwYXJhbWV0ZXIgaW4gdGhlIDR0aCBtb2RlbCAoYWRhcHRpdmUpLiBEZWZhdWx0IGlzIDUKIycKIycgQHJldHVybiAtIGFuIHh0cyBvYmplY3Qgd2hpY2ggY29udGFpbnMgcm9sbGluZyBDQVZpYVIgcHJlZGljdGlvbnMKIycgQGV4cG9ydAojJwojJyBAZXhhbXBsZXMgLSByb2xsaW5nX3ByZWRpY3Rpb25zKHNweSwgbmZjc3QgPSAyMikKcm9sbGluZ19wcmVkaWN0aW9ucyA9IGZ1bmN0aW9uKGlucHV0X2RhdGEsIHJhbmdlX2RhdGEgPSAoMjpkaW0oaW5wdXRfZGF0YSlbMV0pLCBuZmNzdCA9IDI1MCwgbW9kZWwgPTEsIGxldmVsID0gMC4wMSwgRyA9IDUsIGNvbCA9IDIpewogICMgUnVuIHRoZSB2YXJwcmVkaWN0IGZ1bmN0aW9uCiAgdmFycHJlZGljdCA8LSByb2xsYXBwbHlyKGlucHV0X2RhdGFbcmFuZ2VfZGF0YSxjb2xdLCBsZW5ndGgocmFuZ2VfZGF0YSkgLSBuZmNzdCwgY2F2aWFyT3B0aW0sIG1vZGVsLCBsZXZlbCwgcHJlZGljdCA9IDEsIGsgPSBHKSAlPiUgbGFnCiAgIyBFbGltaW5hdGUgTkFzCiAgIyBwcmVkX25vX25hID0gbmEub21pdCh2YXJwcmVkaWN0KQogICMgUmV0dXJuIHRoZSBkYXRhCiAgIyByZXR1cm4ocHJlZF9ub19uYSkKICByZXR1cm4odmFycHJlZGljdCkKfQoKYGBgCgpgYGB7cn0KIycgRnVuY3Rpb24gdG8gQ2FsY3VsYXRlIExvc3MgZnJvbSB0aGUgYWJvdmUgcHJlZGljdGlvbnMKIycKIycgQHBhcmFtIHN5bWJvbCAtIHN5bWJvbCB0byB3b3JrIHdpdGggZnJvbSBxdWFudG1vZC4gTXVzdCBiZSBpbiBxdW90YXRpb25zIHRvIHdvcmsKIycgQHBhcmFtIHN0YXJ0X2R0IC0gc3RhcnQgZGF0ZSBvZiB0aGUgZGF0YSB0byBidWlsZCB0aGUgZm9yZWNhc3Qgb24gCiMnIEBwYXJhbSBlbmRfZHQgLSBlbmQgZGF0ZSBvZiB0aGUgZGF0YSB0byBidWlsZCB0aGUgZm9yZWNhc3Qgb24gIAojJyBAcGFyYW0gbmZjc3QgLSBudW1iZXIgb2YgZGF0YSBwb2ludHMgdG8gdXNlIGluIHRoZSBmb3JlY2FzdAojJyBAcGFyYW0gbW9kZWwgLSBtb2RlbCB0byB1c2UuIERlZmF1bHRzIHRvIDEKIycgQHBhcmFtIGxldmVsIC0gbGV2ZWwgb2Ygc2lnbmlmaWNhbmNlLiBEZWZhdWx0cyB0byAxJQojJyBAcGFyYW0gRyAtIGFyZ3VtZW50IGZvciB0aGUgayBwYXJhbWV0ZXIgaW4gdGhlIDR0aCBtb2RlbCAoYWRhcHRpdmUpLiBEZWZhdWx0IGlzIDUKIycKIycgQHJldHVybiAtIGxvc3MgdXNpbmcgYWJzb2x1dGUgdmFsdWUKIycgQGV4cG9ydCAtIGEgcGxvdCBvZiB0aGUgZGF0YQojJwojJyBAZXhhbXBsZXMKbG9zc19jYWxjX3V2ID0gZnVuY3Rpb24oc3ltYm9sLCBzdGFydF9kdCwgZW5kX2R0LCBuZmNzdCwgbW9kZWwgPSAxLCBsZXZlbCA9IDAuMDEsIEcgPSA1KXsKICAjIFB1bGwgaW4gdGhlIGRhdGEKICByYXdfZGF0YSA9IGRhdGFfcHVsbChzeW1ib2wsIHN0YXJ0X2RhdGUgPSBzdGFydF9kdCwgZW5kX2RhdGUgPSBlbmRfZHQpCiAgIyBGb3JlY2FzdCBiYXNlZCBvbiB0aGUgZGF0YQogIGZjc3QgPSBuYS5vbWl0KHJvbGxpbmdfcHJlZGljdGlvbnMocmF3X2RhdGEsIG5mY3N0ID0gbmZjc3QsIG1vZGVsID0gbW9kZWwsIGxldmVsID0gbGV2ZWwsIEcgPSBHKSkqKC0xKQogICMgRXh0cmFjdCBhY3R1YWxzCiAgYWN0ID0gdGFpbChyYXdfZGF0YSwgbiA9IG5mY3N0KVssMl0KICAjIEpvaW4gdGhlIHR3byB0b2dldGhlciBhbmQgcmVuYW1lCiAgam9pbiA9IG1lcmdlKGZjc3QsYWN0LGFsbD1UUlVFKQogIGNvbG5hbWVzKGpvaW4pIDwtIGMoIkZjc3RfVmFSIiwgIkFjdF9SZXR1cm4iKQogICMgcHJpbnQoam9pbikKICAjIENhbGN1bGF0ZSB0aGUgbG9zc2VzCiAgbG9zcyA9IGFicyhzdW0oaWZlbHNlKGFjdCA+IGZjc3QsIGxldmVsLCAoLTEpKigxLWxldmVsKSkpKQogICMgUGxvdCB0aGUgZGF0YQogIHBsb3QgPSBwbG90Lnh0cyhqb2luLCBjb2wgPSBjKCJyZWQiLCAiYmxhY2siKSwgbHR5ID0gYygyLDEpLCBtYWluID0gIkxvZyBSZXR1cm4gZnJvbSB0aGUgU1BZIHZzLiBGY3N0LiBWYVIiLGdyaWQuY29sID0gTkEsIGxlZ2VuZC5sb2MgPSAiYm90dG9tbGVmdCIpCiAgcmV0dXJuKGxpc3QobG9zcywgcGxvdCwgYWN0LCBmY3N0KSkKfQoKYGBgCgojIyBNViBDYXZpYXIgLSBQdWxsaW5nIHRoZSBkYXRhCgpgYGB7ciwgY2FjaGUgPSBUUlVFfQojJyBUaGlzIGlzIGEgZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIGRhdGEgZnJhbWUgZm9yIHRoZSByZXNwb25zZSBhbmQgZXhwbGFuYXRvcnkgdmFyaWFibGVzIHRoYXQgd2UnbGwgZmVlZCBpbnRvIHRoZSBkaWZmdXNpb24gaW5kZXgKIycKIycgQHBhcmFtIHN5bWJvbF9saXN0IC0gYSBsaXN0IG9mIHN5bWJvbHMgcmVjb2duaXphYmxlIGJ5IHRoZSAKIycgQHBhcmFtIHJlc3BfdmFyIC0gdGhlIHJlc3BvbnNlIHZhcmlhYmxlIHdlJ2QgbGlrZSB0byBmb3JlY2FzdDsgZGVmYXVsdCBpcyBTUFkKIycgQHBhcmFtIGNvbXBsX2Nhc2UgLSBkZWZhdWx0cyB0byB0cnVlLi4ub25seSBpbmNsdWRlcyBjb21wbGV0ZSBjYXNlcyBpbiB0aGUgZGF0YQojJyBAcGFyYW0gYWRqX2Nsb3NlIC0gdXNlIGFkanVzdGVkIGNsb3NpbmcgcHJpY2VzIGZvciB0aGUgZXhwbGFuYXRvcnkgdmFyaWFibGVzPyBkZWZhdWx0IGlzIDEgZm9yIFlFUwojJyBAcGFyYW0gcmVzcF9hZGpfY2xvc2UgLSB1c2UgYWRqdXN0ZWQgY2xvc2luZyBwcmljZXMgZm9yIHRoZSBleHBsYW5hdG9yeSB2YXJpYWJsZXM/IGRlZmF1bHQgaXMgMSBmb3IgWUVTCiMnIEBwYXJhbSBzdGFydF9kYXRlIC0gc3RhcnRpbmcgZGF0YSB0byB1c2UKIycgQHBhcmFtIGVuZF9kYXRlIC0gZW5kaW5nIGRhdGUgb2YgdGhlIGRhdGEKIycgQHBhcmFtIGxhZ19wcmVkIC0gZG8gd2UgbGFnIHRoZSBwcmVkaWN0aW9ucz8gSXQgaXMgU1RST05HTFkgcmVjb21tZW5kZWQgdGhhdCB0aGlzIGlzIDAKIycKIycgQHJldHVybiAtIGEgZGF0YSBmcmFtZSB3aGljaCBjYW4gYmUgZmVkIGludG8gdGhlIFNXZm9yZSBmdW5jdGlvbgojJyBAZXhwb3J0CiMnCiMnIEBleGFtcGxlcyAtIGRpZmZfaW5kZXhfZGYoYygiWExGIiwgIlhMRSIsICJQU0NUIiwgIlhMViIsICJWUFUiLCAiWExQIiwgIklHRiIsICJYV0VCIiwgIlBQVFkiKSkKZGlmZl9pbmRleF9kZiA9IGZ1bmN0aW9uKHN5bWJvbF9saXN0LCByZXNwX3ZhciA9ICJTUFkiLCBjb21wbF9jYXNlID0gMSwgYWRqX2Nsb3NlID0gMSwgcmVzcF9hZGpfY2xvc2UgPSAxLCBzdGFydF9kYXRlID0gIjE5MDAtMDEtMDEiLCBlbmRfZGF0ZSA9IFN5cy5EYXRlKCksIGxhZ19wcmVkID0gMSl7CiAgIyBQdWxsIGluIHJlc3BvbnNlIHZhcmlhYmxlCiAgcmVzcG9uc2VfcHVsbCA9IGdldFN5bWJvbHMocmVzcF92YXIsIGF1dG8uYXNzaWduID0gRkFMU0UsIGZyb20gPSBzdGFydF9kYXRlLCB0byA9IGVuZF9kYXRlKQogICMgR2V0IGFkanVzdGVkIGNsb3NpbmcgcHJpY2UKICBpZiAocmVzcF9hZGpfY2xvc2UgPT0gVFJVRSl7CiAgICBkaWZmX2RmID0gQWQocmVzcG9uc2VfcHVsbCkKICB9IGVsc2UgewogICAgZGlmZl9kZiA9IENsKHJlc3BvbnNlX3B1bGwpCiAgfQogICMgTG9vcCB0aHJvdWdoIHRoZSBzeW1ib2xzIGFuZCBqb2luIGluIGRhdGEKICBmb3IgKGkgaW4gMTpsZW5ndGgoc3ltYm9sX2xpc3QpKXsKICAgICMgUHVsbCBjbG9zaW5nIHByaWNlCiAgICBleHBsX3B1bGwgPSBnZXRTeW1ib2xzKHN5bWJvbF9saXN0W2ldLCBhdXRvLmFzc2lnbiA9IEZBTFNFLCBmcm9tID0gc3RhcnRfZGF0ZSwgdG8gPSBlbmRfZGF0ZSkKICAgICMgRXh0cmFjdCBjbG9zaW5nIHByaWNlIC0gNHRoIGVsZW1lbnQKICAgIGlmIChhZGpfY2xvc2UgPT0gVFJVRSl7CiAgICAgIGV4cGxfY2wgPSBBZChleHBsX3B1bGwpCiAgICB9IGVsc2UgewogICAgICBleHBsX2NsID0gQ2woZXhwbF9wdWxsKQogICAgfQogICAgIyBOZXcgY29kZSBmb3IgNC4xNi4yMDIwIC0gbGFnIHRoZSBleHBsYW5hdG9yeSB2YXJpYWJsZXMKICAgIGlmIChsYWdfcHJlZCA9PSBUUlVFKXsKICAgICAgIyBMYWcgdGhlIGV4cGxhbmF0b3J5IHZhcmlhYmxlcyBieSAxCiAgICAgIGxhZ19leHAgPSBsYWcoZXhwbF9jbCwgMSkKICAgICAgIyBBcHBlbmQgdGhlIGZpcnN0IGxhZyB0byB0aGUgZGF0YSBmcmFtZQogICAgICBkaWZmX2RmID0gbWVyZ2UoZGlmZl9kZiwgbGFnX2V4cCwgam9pbiA9ICJsZWZ0IiwgZmlsbCA9IE5BKQogICAgfSBlbHNlewogICAgICAjIFJldHVybiB0aGUgZGF0YSBmcmFtZSB3aXRob3V0IGxhZ3MKICAgICAgZGlmZl9kZiA9IG1lcmdlKGRpZmZfZGYsIGV4cGxfY2wsIGpvaW4gPSAibGVmdCIsIGZpbGwgPSBOQSkKICAgIH0KICB9CiAgaWYgKGxhZ19wcmVkID09IFRSVUUpewogICAgIyBDaG9wIG9mZiB0aGUgZmlyc3Qgcm93CiAgICBkaWZmX2RmID0gZGlmZl9kZlstMSxdCiAgfQogIGVsc2UgewogICAgcHJpbnQoIlBMRUFTRSBOT1RFIC0gdGhlIGV4cGxhbmF0b3J5IHZhcmlhYmxlcyBpbiB0aGlzIERGIGFyZSBOT1QgbGFnZ2VkLiBCZSBjYXJlZnVsIHRvIGF2b2lkIGxvb2stYWhlYWQgYmlhcyEiKQogIH0KICAjIFJldHVybiBjb21wbGV0ZSBjYXNlcyBvbmx5IAogIGlmIChjb21wbF9jYXNlID09IFRSVUUpewogICAgZGlmZl9kZl9vdXQgPSBkaWZmX2RmW2NvbXBsZXRlLmNhc2VzKGRpZmZfZGYpLCBdCiAgfSBlbHNlewogICAgZGlmZl9kZl9vdXQgPSBkaWZmX2RmCiAgfQogIAogIHJldHVybihkaWZmX2RmX291dCkKfQoKYGBgCgpgYGB7ciwgY2FjaGUgPSBUUlVFfQojJyBDb252ZXJ0cyBhIGRpZmZfZGYgaW50byBhIGRhdGEgZnJhbWUgd2l0aCBhcHByb3hpbWF0ZSBwZXJjZW50YWdlIGNoYW5nZXMgZGlmZihsb2coZGlmZl9kZikpCiMnCiMnIEBwYXJhbSBkaWZmX2RmIC0gb3V0cHV0IG9mIHRoZSBkaWZmX2luZGV4X2RmIGZ1bmN0aW9uIHdpdGggY29tcGxldGUgY2FzZXMKIycKIycgQHJldHVybiAtIHJldHVucyB0aGUgZGlmZmVyZW5jZWQgZGF0YQojJyBAZXhwb3J0CiMnCiMnIEBleGFtcGxlcyAtIHBjX2RpZmZfaW5kZXgodGVzdF9jb21wbCkgCgpwY19kaWZmX2luZGV4ID0gZnVuY3Rpb24oZGlmZl9kZil7CiAgIyBEaWZmZXJlbmNlIHRoZSBsb2cgb2YgdGhlIGRhdGEKICBwY19kaWZmX2luZGV4ID0gZGlmZihsb2coZGlmZl9kZikpCiAgIyBSZW1vdmUgdGhlIGZpcnN0IHJvdwogIHBjX2RpZmZfaW5kZXhfb3V0ID0gcGNfZGlmZl9pbmRleFstMSxdCiAgcmV0dXJuKHBjX2RpZmZfaW5kZXhfb3V0KQp9CgpgYGAKCiMjIE1WIENhdmlhciAtIE1vZGlmaWVkIERJIGNvZGUKClRoZSBjb2RlIHRoYXQgaXMgdXNlZCBpbiBhIGRpZmZ1c2lvbiBpbmRleCBtb2RlbCBpcyBhcyBmb2xsb3dzLiBUaGUga2V5IGlzIGZpZ3VyaW5nIG91dCB3aGVyZSB0byBtYWtlIHRoZSBleHRlbnNpb24uIEknbGwgZ28gdGhyb3VnaCBhbmQgY29tbWVudCBldmVyeXRoaW5nIGFuZCBzZWUgd2hhdCdzIHdoYXQuCgpgYGB7cn0KIycgQmVsb3cgaXMgdGhlIG1vZGlmaWVkIGRpZmZ1c2lvbiBpbmRleCBjb2RlLgojJwojJyBAcGFyYW0geSAtIHJlc3BvbnNlIHZhcmlhYmxlCiMnIEBwYXJhbSB4IC0gcHJlZGljdG9yIHZhcmlhYmxlcwojJyBAcGFyYW0gb3JpZyAtIGZvcmVjYXN0IG9yaWdpbgojJyBAcGFyYW0gbSAtIG51bWJlciBvZiBkaWZmdXNpb24gaW5kZXhlcyB1c2VkCiMnIEBwYXJhbSB0YXUgLSBWYVIgbGV2ZWwgdG8gdXNlOyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMQojJyBAcGFyYW0gZW5kIC0gc3BlY2lmaWVzIGFuIGFsdGVybmF0ZSBlbmRpbmcgdmFsdWUKIycgQHBhcmFtIHByaW50X21kbCAtIHByaW50IHRoZSBtb2RlbCBzdW1tYXJ5IGFuZCB0aGUgTVNFCiMnCiMnIEByZXR1cm4gLSByZXR1cm5zIGEgbGlzdCBvZiB2YXJpYWJsZXMgZm9yIHVzZSBpbiB0aGUgZGlmZnVzaW9uIGluZGV4CiMnIEBleHBvcnQKIycKIycgQGV4YW1wbGVzCm1vZF9kaSA9IGZ1bmN0aW9uICh5LCB4LCBvcmlnLCBtLCB0YXUsIGVuZCA9IE5VTEwsIHByaW50X21kbCA9IDApIAp7CiAgIyBDb252ZXJ0cyB0aGUgcmVzcG9uc2UgdmFyaWFibGVzIGludG8gYSBtYXRyaXgKICBpZiAoIWlzLm1hdHJpeCh4KSkgCiAgICAgIHggPSBhcy5tYXRyaXgoeCkKICAjIG5UIGlzIG51bWJlciBvZiB0IHRpbWUtc3RlcHMKICBuVCA9IGRpbSh4KVsxXQogICMgQWRkIGEgbGluZSB0byBlc3RhYmxpc2ggdGhlIG51bWJlciBvZiBkYXRhIHBvaW50cyB1c2VkIGluIHRoZSB0ZXN0LgogIGlmIChpcy5udWxsKGVuZCkgIT0gVFJVRSl7CiAgICBuVCA9IGVuZAogIH0KICAjIGsgaXMgdGhlIG51bWJlciBvZiBkaWZmdXNpb24gaW5kaWNlcyB1c2VkCiAgayA9IGRpbSh4KVsyXQogICMgU2FuaXR5IGNoZWNrcyB0byBlbnN1cmUgdGhhdCB0aGUgb3JpZ2luIGlzbid0IHBhc3QgdGhlIG51bWJlciBvZiB0aW1lIHBvaW50cwogIGlmIChvcmlnID4gblQpIAogICAgICBvcmlnID0gblQKICAjIE1ha2VzIHN1cmUgdGhhdCB0aGVyZSBhcmVuJ3QgbW9yZSBwcmVkaWN0b3JzIHRoYW4gdGhlcmUgdmFyaWFibGVzIGluIHRoZSBkYXRhc2V0CiAgaWYgKG0gPiBrKSAKICAgICAgbSA9IGsKICAjIE1ha2VzIHN1cmUgdGhlcmUgYXJlIGF0IGxlYXN0IHNvbWUgdmFyaWFibGVzCiAgaWYgKG0gPCAxKSAKICAgICAgbSA9IDEKICAjIFN1YmRpdmlkZXMgdGhlIGRhdGFmcmFtZQogIHgxID0geFsxOm9yaWcsIF0KICAjIENhbGN1bGF0ZXMgbWVhbnMgb2YgZWFjaCByb3cKICBtZSA9IGFwcGx5KHgxLCAyLCBtZWFuKQogICMgQ2FsY3VsYXRlcyBzdGFuZGFyZCBkZXZpYXRpb25zIG9mIGVhY2ggY29sdW1uCiAgc2UgPSBzcXJ0KGFwcGx5KHgxLCAyLCB2YXIpKQogICMgQ3JlYXRlcyBhIG1hdHJpeCB4MSwgd2hpY2ggbm9ybWFsaXplcyBhbGwgdGhlIGNvbHVtbnMuIAogICMgVGhpcyBtYXkgYmUgYW4gaXNzdWUgc2luY2UgaXQgYXNzdW1lcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgc3VmZmljaWVudGx5IGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgdHdvIG1vbWVudHMKICB4MSA9IHgKICBmb3IgKGkgaW4gMTprKSB7CiAgICAgIHgxWywgaV0gPSAoeDFbLCBpXSAtIG1lW2ldKS9zZVtpXQogIH0KICBWMSA9IGNvdih4MVsxOm9yaWcsIF0pCiAgIyBQZXJmb3JtcyBhbiBlaWdlbiBkZWNvbXBvc2l0aW9uCiAgbTEgPSBlaWdlbihWMSkKICAjIFNlbGVjdHMgZWlnZW52YWx1ZXMKICBzZGV2ID0gbTEkdmFsdWVzCiAgIyBTZWxlY3RzIGVpZ2VudmVjdG9ycwogIE0gPSBtMSR2ZWN0b3JzCiAgIyBNYWtlcyBhIHNtYWxsZXIgbWF0cml4CiAgTTEgPSBNWywgMTptXQogICMgVGhpcyBpcyB0aGUgZGlmZnVzaW9uIGluZGV4IG1vZGVsIC0gW29yaWcgeCBwXSpbcCB4IG1dID0gW29yaWcgeCBtXQogIERpbmRleCA9IHgxICUqJSBNMQogICMgQ3V0IGRvd24gYm90aCB0aGUgcmVzcG9uc2UgYW5kIHByZWRpY3RvcnMgdG8gYmUgYSByZWFzb25hYmxlIHNpemUKICB5MSA9IHlbMTpvcmlnXQogIERGID0gRGluZGV4WzE6b3JpZywgXQogICMgQXBwbHkgdGhlIGxpbmVhciBtb2RlbCAtIEhFUkUgaXMgdGhlIGtleS4KICAjIG1tID0gbG0oeTEgfiBERikgLSBvbGQgZnVuY3Rpb24KICBtbSA9IHJxKHkxIH4gREYsIHRhdSA9IHRhdSkKICAjIFByaW50IHRoZSBkYXRhCiAgaWYgKHByaW50X21kbCA9PSAxKXsKICAgIHByaW50KHN1bW1hcnkobW0pKQogIH0KICAjIFB1dHMgY29lZmZpY2llbnRzIGluIGEgbWF0cml4CiAgY29lZiA9IG1hdHJpeChtbSRjb2VmZmljaWVudHMsIChtICsgMSksIDEpCiAgIyBJbml0aWFsaXplcyB5aGF0IHZhcmlhYmxlcyBhbmQgTVNFCiAgeWhhdCA9IE5VTEwKICBNU0UgPSBOVUxMCiAgaWYgKG9yaWcgPCBuVCkgewogICAgIyBDcmVhdGVzIGEgbmZjc3QgYnkgKG0rMSkgbWF0cml4CiAgICBuZXd4ID0gY2JpbmQocmVwKDEsIChuVCAtIG9yaWcpKSwgRGluZGV4WyhvcmlnICsgMSk6blQsIAogICAgICAgIF0pCiAgICAjIFtuZmNzdHgobSsxKV0qWyhtKzEpeDFdID0gW25mY3N0eDFdCiAgICB5aGF0ID0gbmV3eCAlKiUgY29lZgogICAgIyBDYWxjdWxhdGVzIGVycm9ycwogICAgZXJyID0geVsob3JpZyArIDEpOm5UXSAtIHloYXQKICAgIE1TRSA9IG1lYW4oZXJyXjIpCiAgICBpZiAocHJpbnRfbWRsID09IDEpewogICAgICBjYXQoIk1TRSBvZiBvdXQtb2Ytc2FtcGxlIGZvcmVjYXN0czogIiwgTVNFLCAiXG4iKQogICAgfQogIH0KICBTV2ZvcmUgPC0gbGlzdChjb2VmID0gY29lZiwgeWhhdCA9IHloYXQsIE1TRSA9IE1TRSwgbG9hZGluZ3MgPSBNMSwgCiAgICAgIERGaW5kZXggPSBEaW5kZXgpCn0KCmBgYAoKTm93IHRoYXQgd2UgaGF2ZSB0aGUgZnVuY3Rpb24sIGxldCdzIHNlZSBpZiB3ZSBjYW4gZ2V0IGl0IHRvIHdvcmsuIEZpcnN0LCB3ZSdsbCBuZWVkIHRvIGNvbXBpbGUgYWxsIG9mIG91ciBkYXRhCgpMZXQncyBhZGQgYSBjb2RlIHdoaWNoIGluY29ycG9yYXRlcyB0aGUgcHJldmlvdXMgdmFsdWVzIG9mIHRoZSByZXR1cm4uCgpgYGB7cn0KIycgQmVsb3cgaXMgdGhlIG1vZGlmaWVkIGRpZmZ1c2lvbiBpbmRleCBjb2RlIHRvIGluY2x1ZGUgbGFnZ2VkIHZhcmlhYmxlcy4KIycKIycgQHBhcmFtIHkgLSByZXNwb25zZSB2YXJpYWJsZQojJyBAcGFyYW0geCAtIHByZWRpY3RvciB2YXJpYWJsZXMKIycgQHBhcmFtIG9yaWcgLSBmb3JlY2FzdCBvcmlnaW4KIycgQHBhcmFtIG0gLSBudW1iZXIgb2YgZGlmZnVzaW9uIGluZGV4ZXMgdXNlZAojJyBAcGFyYW0gdGF1IC0gVmFSIGxldmVsIHRvIHVzZTsgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEKIycgQHBhcmFtIGFyX3RmIC0gQVIgdHJhbnNmb3JtYXRpb24gdHlwZS4gKDEgLSBubyB0cmFuc2Zvcm1hdGlvbiwKIycgMiAtIGFic29sdXRlIHZhbHVlLCAzIC0gYXN5bW1ldHJpYyBzbG9wZSkKIycgQHBhcmFtIHAgLSBudW1iZXIgb2YgQVIgbGFncyB0byBpbmNsdWRlLiBEZWZhdWx0IGlzIG9uZS4KIycgQHBhcmFtIHByaW50X21kbCAtIG9wdGlvbiB0byBwcmludCB0aGUgbW9kZWwgc3VtbWFyeSB0byBtYWtlIHN1cmUgZXZlcnl0bmluZyBpcyBvay4gMCBpcyBkZWZhdWx0LgojJyBAcGFyYW0gbW9kZWwgLSBtb2RlbCB0eXBlICgxIC0gU0FWLCAyIC0gQVMsIDMgLSBHQVJDSCwgNCAtIEFEQVBUSVZFKSAKIycKIycgQHJldHVybiAtIHJldHVybnMgYSBsaXN0IG9mIHZhcmlhYmxlcyBmb3IgdXNlIGluIHRoZSBkaWZmdXNpb24gaW5kZXgKIycgQGV4cG9ydAojJwojJyBAZXhhbXBsZXMKbW9kX2RpX3dsID0gZnVuY3Rpb24gKHksIHgsIG9yaWcsIG0sIHRhdSwgYXJfdGYgPSAxLCBwID0gMSwgcHJpbnRfbWRsID0gMCwgbW9kZWwgPSAxLCBlbmQgPSBOVUxMKSAKewogICMgQ29udmVydHMgdGhlIHJlc3BvbnNlIHZhcmlhYmxlcyBpbnRvIGEgbWF0cml4CiAgaWYgKCFpcy5tYXRyaXgoeCkpIAogICAgICB4ID0gYXMubWF0cml4KHgpCiAgIyBuVCBpcyBudW1iZXIgb2YgdCB0aW1lLXN0ZXBzCiAgblQgPSBkaW0oeClbMV0KICAjIEFkZCBhIGxpbmUgdG8gZXN0YWJsaXNoIHRoZSBudW1iZXIgb2YgZGF0YSBwb2ludHMgdXNlZCBpbiB0aGUgdGVzdC4KICBpZiAoaXMubnVsbChlbmQpICE9IFRSVUUpewogICAgblQgPSBlbmQKICB9CiAgIyBrIGlzIHRoZSBudW1iZXIgb2YgZGlmZnVzaW9uIGluZGljZXMgdXNlZAogIGsgPSBkaW0oeClbMl0KICAjIFNhbml0eSBjaGVja3MgdG8gZW5zdXJlIHRoYXQgdGhlIG9yaWdpbiBpc24ndCBwYXN0IHRoZSBudW1iZXIgb2YgdGltZSBwb2ludHMKICBpZiAob3JpZyA+IG5UKSAKICAgICAgb3JpZyA9IG5UCiAgIyBNYWtlcyBzdXJlIHRoYXQgdGhlcmUgYXJlbid0IG1vcmUgcHJlZGljdG9ycyB0aGFuIHRoZXJlIHZhcmlhYmxlcyBpbiB0aGUgZGF0YXNldAogIGlmIChtID4gaykgCiAgICAgIG0gPSBrCiAgIyBNYWtlcyBzdXJlIHRoZXJlIGFyZSBhdCBsZWFzdCBzb21lIHZhcmlhYmxlcwogIGlmIChtIDwgMSkgCiAgICAgIG0gPSAxCiAgIyBTdWJkaXZpZGVzIHRoZSBkYXRhZnJhbWUKICB4MSA9IHhbMTpvcmlnLCBdCiAgIyBDYWxjdWxhdGVzIG1lYW5zIG9mIGVhY2ggcm93CiAgbWUgPSBhcHBseSh4MSwgMiwgbWVhbikKICAjIENhbGN1bGF0ZXMgc3RhbmRhcmQgZGV2aWF0aW9ucyBvZiBlYWNoIGNvbHVtbgogIHNlID0gc3FydChhcHBseSh4MSwgMiwgdmFyKSkKICAjIENyZWF0ZXMgYSBtYXRyaXggeDEsIHdoaWNoIG5vcm1hbGl6ZXMgYWxsIHRoZSBjb2x1bW5zLiAKICAjIFRoaXMgbWF5IGJlIGFuIGlzc3VlIHNpbmNlIGl0IGFzc3VtZXMgdGhhdCB0aGUgZGlzdHJpYnV0aW9uIGlzIHN1ZmZpY2llbnRseSBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IHR3byBtb21lbnRzCiAgeDEgPSB4CiAgZm9yIChpIGluIDE6aykgewogICAgICB4MVssIGldID0gKHgxWywgaV0gLSBtZVtpXSkvc2VbaV0KICB9CiAgVjEgPSBjb3YoeDFbMTpvcmlnLCBdKQogICMgUGVyZm9ybXMgYW4gZWlnZW4gZGVjb21wb3NpdGlvbgogIG0xID0gZWlnZW4oVjEpCiAgIyBTZWxlY3RzIGVpZ2VudmFsdWVzCiAgc2RldiA9IG0xJHZhbHVlcwogICMgU2VsZWN0cyBlaWdlbnZlY3RvcnMKICBNID0gbTEkdmVjdG9ycwogICMgTWFrZXMgYSBzbWFsbGVyIG1hdHJpeAogIE0xID0gTVssIDE6bV0KICAjIFRoaXMgaXMgdGhlIGRpZmZ1c2lvbiBpbmRleCBtb2RlbCAtIFtvcmlnIHggcF0qW3AgeCBtXSA9IFtvcmlnIHggbV0KICBEaW5kZXggPSB4MSAlKiUgTTEKICAjIEN1dCBkb3duIGJvdGggdGhlIHJlc3BvbnNlIGFuZCBwcmVkaWN0b3JzIHRvIGJlIGEgcmVhc29uYWJsZSBzaXplCiAgeTEgPSB5WzE6b3JpZ10KICBERiA9IERpbmRleFsxOm9yaWcsIF0KICAjIENvcHkgdGhlIGRhdGEgZnJhbWUKICBERl93bCA9IERpbmRleAogICMgTGFnIHRoZSB5LXZhcmlhYmxlCiAgZm9yIChpIGluIDE6cCl7CiAgICAjIENyZWF0ZSBhIGxhZ2dlZCB2YXJpYWJsZQogICAgbGFnX3ZhciA9IGxhZyh5LCBpKQogICAgIyBBcHBlbmQgdGhlIGZpcnN0IGxhZyB0byB0aGUgZGF0YSBmcmFtZQogICAgREZfd2wgPSBjYmluZChERl93bCxsYWdfdmFyKQogIH0KICAjIElkZW50aWZ5IHRoZSByaWdodCBjb2x1bW5zCiAgbF9hciA9IG5jb2woREZfd2wpCiAgZl9hciA9IGxfYXIgLSBwICsgMQogICMgS2VlcCB0aGUgbGFzdCBjb2x1bW5zIGtlcHQgdG8gdGhlIHNpZGUKICBhbGxfbGFnID0gREZfd2xbLChmX2FyOmxfYXIpXQogICMgQ3V0IG9mZiB0aGUgZmlyc3Qgcm93IHRvIGF2b2lkIE5BJ3MKICBERl90cmltID0gREZfd2xbMTpvcmlnLF0KICAjIFJlbmFtZSB0aGUgY29sdW1ucwogICMgSGVyZSdzIHRoZSBuZXcgZnVuY3Rpb24gd2l0aCBhbiB1bnRyYW5zZm9ybWVkIEFSKHApIGxhZwogIGlmIChhcl90ZiA9PSAxKXsKICAgICMgSW5jb3Jwb3JhdGUgZXZlcnl0aGluZyBpbiB0byBhbiBpbnB1dCBkYXRhIGZyYW1lCiAgICBkZl9pbiA9IGNiaW5kKHkxWy0oMTpwKV0sIERGX3RyaW1bLSgxOnApLF0pCiAgICAjIFJlbmFtZSB0aGUgY29sdW1ucwogICAgIyBJbml0aWFsaXplIGEgY2hhcmFjdGVyIHZlY3RvcgogICAgbnZlYyA9IGMocmVwKDAsIDErbStwKSkKICAgICMgUG9wdWxhdGUgdGhlIHZlY3RvciAtIGZpcnN0IHZhbHVlIGlzIHRoZSByZXNwb25zZQogICAgbnZlY1sxXSA8LSBuYW1lcyh5KQogICAgIyBOZXh0IGFyZSB0aGUgZGlmZnVzaW9uIGluZGljZXMKICAgIGZvciAoaSBpbiAxOm0pewogICAgICBudmVjW2krMV0gPSBwYXN0ZTAoIkRpZmZfSW5kZXhfIiwgaSkKICAgIH0KICAgICMgTmV4dCBhcmUgdGhlIGxhZ2dlZCB2YXJpYWJsZXMKICAgIGZvciAoaSBpbiAxOnApewogICAgICBudmVjW2krMSttXSA9IHBhc3RlMCgiTGFnXyIsIGkpCiAgICB9CiAgICAjIEFzc2lnbiB0aGUgbmFtZXMKICAgIG5hbWVzKGRmX2luKSA8LSBudmVjCiAgICAjIFJ1biB0aGUgbW9kZWwKICAgIG1tID0gcnEoZGZfaW5bLDFdIH4gZGZfaW5bLC0xXSwgdGF1ID0gdGF1KQogIH0KICAjIEhlcmUncyB0aGUgbmV3IGZ1bmN0aW9uIHdpdGggYW4gU0FWIEFSKHApIGxhZwogIGlmIChhcl90ZiA9PSAyKXsKICAgICMgSW5jb3Jwb3JhdGUgZXZlcnl0aGluZyBpbiB0byBhbiBpbnB1dCBkYXRhIGZyYW1lCiAgICBkZl9pbiA9IGNiaW5kKHkxWy0oMTpwKV0sIERGX3RyaW1bLSgxOnApLC0oZl9hcjpsX2FyKV0sIGFicyhERl90cmltWy0oMTpwKSwoZl9hcjpsX2FyKV0pKQogICAgIyBSZW5hbWUgdGhlIGNvbHVtbnMKICAgICMgSW5pdGlhbGl6ZSBhIGNoYXJhY3RlciB2ZWN0b3IKICAgIG52ZWMgPSBjKHJlcCgwLCAxK20rcCkpCiAgICAjIFBvcHVsYXRlIHRoZSB2ZWN0b3IgLSBmaXJzdCB2YWx1ZSBpcyB0aGUgcmVzcG9uc2UKICAgIG52ZWNbMV0gPC0gbmFtZXMoeSkKICAgICMgTmV4dCBhcmUgdGhlIGRpZmZ1c2lvbiBpbmRpY2VzCiAgICBmb3IgKGkgaW4gMTptKXsKICAgICAgbnZlY1tpKzFdID0gcGFzdGUwKCJEaWZmX0luZGV4XyIsIGkpCiAgICB9CiAgICAjIE5leHQgYXJlIHRoZSBsYWdnZWQgdmFyaWFibGVzCiAgICBmb3IgKGkgaW4gMTpwKXsKICAgICAgbnZlY1tpKzErbV0gPSBwYXN0ZTAoIkxhZ18iLCBpKQogICAgfQogICAgIyBBc3NpZ24gdGhlIG5hbWVzLiBOb3RlIHRoYXQgdGhpcyBpcyBhIG1hdHJpeAogICAgbmFtZXMoZGZfaW4pIDwtIG52ZWMKICAgICMgUnVuIHRoZSBtb2RlbAogICAgbW0gPSBycShkZl9pblssMV0gfiBkZl9pblssLTFdLCB0YXUgPSB0YXUpCiAgfQogICMgSGVyZSdzIHRoZSBuZXcgZnVuY3Rpb24gd2l0aCBhbiBhc3ltbWV0cmljIHNsb3BlIGZvciB0aGUgQVIoMSkgbGFnCiAgIyBJbmRpY2F0b3I7IDAgaWYgcGVyY2VudCBjaGFuZ2UgaXMgbmVnYXRpdmUsIDEgaWYgaXQncyBwb3NpdGl2ZQogICMgaW5kaSA9IGlmZWxzZShERl90cmltWyxhcl0gPCAwLCAwLCAxKQogIGlmIChhcl90ZiA9PSAzKXsKICAgICMgQ3JlYXRlIGEgbWF0cml4IG9mIGluZGljYXRvcnMKICAgIGluZGlfbWF0ID0gbWF0cml4KDAsIG5yb3coREZfd2wpLCBwKQogICAgIyBHZW5lcmFsaXplIHRoZSBhYm92ZSBjb2RlCiAgICBmb3IgKGkgaW4gMTpwKXsKICAgICAgIyBQb3B1bGF0ZSB0aGUgaW5kaWNhdG9yCiAgICAgIGluZGlfbWF0WyxpXSA9IGlmZWxzZShERl93bFssZl9hciArIGkgLSAxXSA8IDAsIDAsIDEpCiAgICB9CiAgfQogICMgRml0dGluZyB0aGUgcmVncmVzc2lvbgogIGlmIChhcl90ZiA9PSAzKXsKICAgICMgSW5jb3Jwb3JhdGUgZXZlcnl0aGluZyBpbiB0byBhbiBpbnB1dCBkYXRhIGZyYW1lCiAgICBkZl9pbiA9IGNiaW5kKHkxWy0oMTpwKV0sIERGX3RyaW1bLSgxOnApLC0oZl9hcjpsX2FyKV0sIERGX3RyaW1bLSgxOnApLChmX2FyOmxfYXIpXSwgaW5kaV9tYXRbKChwKzEpOm9yaWcpLF0pCiAgICAjIFJlbmFtZSB0aGUgY29sdW1ucwogICAgIyBJbml0aWFsaXplIGEgY2hhcmFjdGVyIHZlY3RvcgogICAgbnZlYyA9IGMocmVwKDAsIDErbSsyKnApKQogICAgIyBQb3B1bGF0ZSB0aGUgdmVjdG9yIC0gZmlyc3QgdmFsdWUgaXMgdGhlIHJlc3BvbnNlCiAgICBudmVjWzFdIDwtIG5hbWVzKHkpCiAgICAjIE5leHQgYXJlIHRoZSBkaWZmdXNpb24gaW5kaWNlcwogICAgZm9yIChpIGluIDE6bSl7CiAgICAgIG52ZWNbaSsxXSA9IHBhc3RlMCgiRGlmZl9JbmRleF8iLCBpKQogICAgfQogICAgIyBOZXh0IGFyZSB0aGUgbGFnZ2VkIHZhcmlhYmxlcwogICAgZm9yIChpIGluIDE6cCl7CiAgICAgIG52ZWNbaSsxK21dID0gcGFzdGUwKCJMYWdfIiwgaSkKICAgIH0KICAgICMgTGFzdCBhcmUgdGhlIHBvc2l0aXZlIGluZGljYXRvciB2YXJpYWJsZXMKICAgIGZvciAoaSBpbiAxOnApewogICAgICBudmVjW2krMSttK3BdID0gcGFzdGUwKCJQb3NfVmFsX2Zvcl9MYWdfIiwgaSkKICAgIH0KICAgICMgQXNzaWduIHRoZSBuYW1lcy4gTm90ZSB0aGF0IHRoaXMgaXMgYSBtYXRyaXgKICAgIG5hbWVzKGRmX2luKSA8LSBudmVjCiAgICAjIFJ1biB0aGUgbW9kZWwKICAgIG1tID0gcnEoZGZfaW5bLDFdIH4gZGZfaW5bLC0xXSwgdGF1ID0gdGF1KQogICAgIyBtbSA9IHJxKHkxWy0oMTpwKV0gfiBERl90cmltWy0oMTpwKSwtKGZfYXI6bF9hcildICsgREZfdHJpbVstKDE6cCksKGZfYXI6bF9hcildICsgaW5kaV9tYXRbKChwKzEpOm9yaWcpLF0sIHRhdSA9IHRhdSkKICAgICMgQWRkIGEgZGlmZmVyZW50IGxpbmUgdG8gYWNjb3VudCBmb3IgdGhlIGluZGljYXRvciB2YXJpYWJsZQogICAgIyBpbnRlcmNlcHQgKyBtICsgMipubGFnIHRvIGFjY291bnQgZm9yIHRoZSBudW1iZXIgb2YgaW5kaWNhdG9yIHZhcmlhYmxlcwogICAgY29lZiA9IG1hdHJpeChtbSRjb2VmZmljaWVudHMsICgxICsgbSArIDIqcCksIDEpCiAgfQogIGlmIChwcmludF9tZGwgPT0gMSl7CiAgICBwcmludChzdW1tYXJ5KG1tKSkKICB9CiAgIyBQdXRzIGNvZWZmaWNpZW50cyBpbiBhIG1hdHJpeCAtIGFkZGVkIHRoZSBBUiB0ZXJtcwogICMgY29lZiA9IG1hdHJpeChtbSRjb2VmZmljaWVudHMsIChtICsgMSksIDEpCiAgaWYgKGFyX3RmICE9IDMpewogICAgY29lZiA9IG1hdHJpeChtbSRjb2VmZmljaWVudHMsICgxICsgbSArIHApLCAxKQogIH0KICAjIEluaXRpYWxpemVzIHloYXQgdmFyaWFibGVzIGFuZCBNU0UKICB5aGF0ID0gTlVMTAogIGxvc3MgPSBOVUxMCiAgaWYgKG9yaWcgPCBuVCkgewogICAgIyBDcmVhdGVzIGEgbmZjc3QgYnkgKG0rMikgbWF0cml4CiAgICAjIEFkZCBvbiB0aGUgbGFnZ2VkIHZhcmlhYmxlcwogICAgbmV3eCA9IGNiaW5kKHJlcCgxLCAoblQgLSBvcmlnKSksIERpbmRleFsob3JpZyArIDEpOm5ULCBdLCBhbGxfbGFnWyhvcmlnKzEpOm5ULF0pCiAgICAjIEluY29ycG9yYXRlIGxhZ2dlZCB2YXJpYWJsZXMKICAgIGlmIChhcl90ZiA9PSAzKXsKICAgICAgbmV3eCA9IGNiaW5kKHJlcCgxLCAoblQgLSBvcmlnKSksIERpbmRleFsob3JpZyArIDEpOm5ULCBdLCBhbGxfbGFnWyhvcmlnKzEpOm5ULF0sIGluZGlfbWF0WyhvcmlnKzEpOm5ULF0pCiAgICB9CiAgICAjIFtuZmNzdHgobSsxKV0qWyhtKzEpeDFdID0gW25mY3N0eDFdCiAgICB5aGF0ID0gbmV3eCAlKiUgY29lZgogICAgIyBDYWxjdWxhdGVzIGVycm9ycwogICAgbG9zcyA9IGFicyhzdW0oaWZlbHNlKHlbKG9yaWcgKyAxKTpuVF0gPiB5aGF0LCB0YXUsICgtMSkqKDEtdGF1KSkpKQogICAgIyBNb2RpZnlpbmcgdGhpcyBwYXJ0IHRvIG9ubHkgcHJpbnQgdGhpcyBpZiBzcGVjaWZpZWQKICAgIGlmIChwcmludF9tZGwgPT0gMSl7CiAgICAgIGNhdCgiTG9zc2VzIG9mIG91dC1vZi1zYW1wbGUgZm9yZWNhc3RzOiAiLCBsb3NzLCAiXG4iKQogICAgfQogIH0KICBTV2ZvcmUgPC0gbGlzdChjb2VmID0gY29lZiwgeWhhdCA9IHloYXQsIGxvc3MgPSBsb3NzLCBsb2FkaW5ncyA9IE0xLCAKICAgICAgREZpbmRleCA9IERpbmRleCwgbmFtZV92ZWN0b3IgPSBudmVjKQp9CgpgYGAKCgoKIyMgTVYgQ2F2aWFyIC0gQ2FsY3VhdGluZyBsb3NzZXMKCmBgYHtyfQojIERlY2lkZSBvbiB0aGUgb3B0aW1hbCBudW1iZXIgb2YgdmVjdG9ycy4KCiMgKHksIHgsIG9yaWcsIG0sIHRhdSkgCgojJyBGdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgbG9zcyBvdmVyIGEgZ2l2ZW4gcGVyaW9kIG9mIHRpbWUgZm9yIHRoZSBkaWZmdXNpb24gaW5kZXggbW9kZWwKIycKIycgQHBhcmFtIHkgLSByZXNwb25zZSB2YXJpYWJsZXMKIycgQHBhcmFtIHggLSBleHBsYW5hdG9yeSB2YXJpYWJsZQojJyBAcGFyYW0gb3JpZyAtIGZvcmVjYXN0IG9yaWdpbgojJyBAcGFyYW0gZW5kIC0gZm9yZWNhc3RpbmcgZW5kaW5nLiBOb3RlOiBhcyB0aGUgZnVuY3Rpb24gaXMgY3VycmVudGx5IHdyaXR0ZW4gb24gMi8yNCwgdGhpcyBvcHRpb24gZG9lc24ndCBkbyBhbnl0aGluZy4KIycgQHBhcmFtIG0gLSBudW1iZXIgb2YgZGlmZnVzaW9uIGluZGljZXMgdG8gdXNlCiMnIEBwYXJhbSB0YXUgLSBWYVIgbGV2ZWwKIycgQHBhcmFtIG1vZF9kaSAtIHVzZSB0aGUgbW9kaWZpZWQgREk/CiMnCiMnIEByZXR1cm4gLSByZXR1cm5zIGEgbGlzdCBvZiB0aGUgbG9zcyBzdW0gYW5kIHRoZSBsb3NzIHZlY3RvcgojJyBAZXhwb3J0CiMnCiMnIEBleGFtcGxlcyAtIGxvc3NfY2FsYyhwY19kZlssMV0sIHBjX2RmWywtMV0sIDc1NywgMTAyNywgMSwgMC4wMSkKbG9zc19jYWxjID0gZnVuY3Rpb24oeSwgeCwgb3JpZywgbSwgdGF1LCBtb2RfZGkgPSAwLCBhcl90ZiA9IDEsIHAgPSAxLCBwcmludF9tZGwgPSAwLCBtb2RlbCA9IDEsIGVuZCA9IE5VTEwpewogICMgRXh0cmFjdCB5X2hhdCB2YWx1ZXMKICBpZiAobW9kX2RpID09IDApewogICAgZGkgPSBtb2RfZGkoeT15LHg9eCxvcmlnPW9yaWcsbT1tLCB0YXU9dGF1LCBlbmQgPSBlbmQsIHByaW50X21kbCA9IHByaW50X21kbCkKICB9CiAgZWxzZSB7CiAgICBkaSA9IG1vZF9kaV93bCh5PXkseD14LG9yaWc9b3JpZyxtPW0sIHRhdT10YXUsIGFyX3RmID0gYXJfdGYsIHAgPSBwLCBwcmludF9tZGwgPSBwcmludF9tZGwsIG1vZGVsID0gbW9kZWwsIGVuZCA9IGVuZCkKICB9CiAgIyBtb2RfZGlfd2wgPSBmdW5jdGlvbiAoeSwgeCwgb3JpZywgbSwgdGF1LCBhcl90ZiA9IDEsIHAgPSAxLCBwcmludF9tZGwgPSAwLCBtb2RlbCA9IDEpCiAgeWhhdCA9IGRpJHloYXRbMTooZW5kLW9yaWcpXQogICMgQ2FsY3VsYXRlIHRoZSBsb3NzCiAgIyBJbml0aWFsaXplIGxvc3MgdmVjdG9yCiAgbHZlYyA9IHJlcCgwLChlbmQtb3JpZykpCiAgIyBUYWtlIHRoZSBkaWZmZXJlbmNlCiAgZm9yIChpIGluIDE6KGVuZC1vcmlnKSl7CiAgICAjIENhbGN1bGF0ZSBhbiBpbmRpY2F0b3IgdmFyaWFibGUKICAgIGluZCA9IGlmZWxzZSh5W29yaWcraV0gPCB5aGF0W2ldLCAxLDApCiAgICAjIFVzZSBpbmRpY2F0b3IgaW4gZnVuY3Rpb24gYmVsb3cKICAgIGx2ZWNbaV0gPSAodGF1IC0gaW5kKSooeVtvcmlnK2ldIC0geWhhdFtpXSkKICB9CiAgIyBBZGQgdXAgdGhlIGxvc3NlcyAtIGNoYW5nZSB0byBsb29rIGF0IHN1bSBvZiBsb3NzZXMuIFdvbid0IGNoYW5nZSBkZWNpc2lvbiBjcml0ZXJpb24KICBzdW1sb3NzID0gc3VtKGx2ZWMpCiAgIyBzdW1sb3NzID0gc3VtKGx2ZWMpL2xlbmd0aChsdmVjKQogIHJldHVybihsaXN0KHN1bWxvc3MsbHZlYykpCn0KCgpgYGAKCgoKIyMgTVYgQ2F2aWFyIC0gQ2hvb3NpbmcgdGhlIG9wdGltYWwgbnVtYmVyIG9mIHByZWRpY3RvcnMKCmBgYHtyfQojJyBGdW5jdGlvbiB0aGF0IHNlbGVjdHMgdGhlIG9wdGltYWwgbnVtYmVyIG9mIHByZWRpY3RvcnMKIycKIycgQHBhcmFtIHkgLSByZXNwb25zZSB2ZWN0b3IKIycgQHBhcmFtIHggLSBwcmVkaWN0b3IgdmFyaWFibGVzCiMnIEBwYXJhbSBvcmlnIC0gZm9yZWNhc3Qgb3JpZ2luCiMnIEBwYXJhbSBlbmQgLSBlbmRpbmcgb2YgdmFsaWRhdGlvbiBzZXQKIycgQHBhcmFtIHRhdSAtIFZhUiBpbiBxdWVzdGlvbgojJyBAcGFyYW0gbG93X20gLSBsb3cgdmFsdWUgb2YgbSB0byBjb25zaWRlcgojJyBAcGFyYW0gaGlnaF9tIC0gaGlnaCB2YWx1ZSBvZiBtIHRvIGNvbnNpZGVyCiMnCiMnIEByZXR1cm4gLSByZXR1cm5zIHRoZSBvcHRpbWFsIHZhbHVlIG9mIG0KIycgQGV4cG9ydAojJwojJyBAZXhhbXBsZXMgLSBvcHRfbShwY19kZlssMV0sIHBjX2RmWywtMV0sIDc1NywgMTAyNywgMC4wMSwgbG93X20gPTEsIGhpZ2hfbSAgPSA1KQpvcHRfbSA9IGZ1bmN0aW9uKHksIHgsIG9yaWcsIGVuZCA9IE5VTEwsIHRhdSwgbG93X20gPSAxLCBoaWdoX20sIG1vZF9kaSA9IDAsIGFyX3RmID0gMSwgcCA9IDEsIHByaW50X21kbCA9IDAsIG1vZGVsID0gMSwgcm93bmFtZSA9IE5VTEwpewogICMgSW5pdGlhbGl6ZSBhIGxvc3MgdmVjdG9yCiAgbG9zc192ZWMgPSByZXAoMCxoaWdoX20tbG93X20gKyAxKQogICMgSW5pdGlhbGl6ZSBhbiBtIHZlY3RvcgogIG1fdmVjID0gc2VxKGxvd19tLCBoaWdoX20sIGJ5ID0gMSkKICAjIExvb3AgdGhyb3VnaCBhbmQgcG9wdWxhdGUgdGhlIGxvc3MgdmVjdG9yCiAgZm9yIChpIGluIDE6bGVuZ3RoKGxvc3NfdmVjKSl7CiAgICBsb3NzX3ZlY1tpXSA9IHF1aWV0KGxvc3NfY2FsYyh5PXkseD14LG9yaWc9b3JpZyxlbmQ9ZW5kLCBtID0gbV92ZWNbaV0sIHRhdSA9IHRhdSwgbW9kX2RpID0gbW9kX2RpLCBhcl90ZiA9IGFyX3RmLCBwID0gcCwgcHJpbnRfbWRsID0gcHJpbnRfbWRsLCBtb2RlbCA9IG1vZGVsKSlbWzFdXQogIH0KICAjIEZpbmQgdGhlIG1pbmltaXplcgogIG9wdF9tID0gd2hpY2gubWluKGxvc3NfdmVjKQogIG9wdF9wID0gTkEKICAjIENvbWJpbmUgaW50byBhIGRhdGEgZnJhbWUKICBkZiA9IGFzLmRhdGEuZnJhbWUoY2JpbmQob3B0X20sIG9wdF9wKSkKICBuYW1lcyhkZikgPC0gYygiT3B0aW1hbCBtIiwgIk9wdGltYWwgcCIpCiAgIyBBc3NpZ24gYSByb3duYW1lCiAgaWYgKGlzLm51bGwocm93bmFtZSkgPT0gVFJVRSl7CiAgICAjIFdyaXRlIHRoZSByb3cgbmFtZXMKICAgIHJvd25hbWVzKGRmKSA8LSBjKCJNViBDQVZpYVIiKQogIH0KICBlbHNlIHsKICAgIHJvd25hbWVzKGRmKSA8LSByb3duYW1lCiAgfQogICMgUmV0dXJuIHRoZSBsb3NzX3ZlY3RvciBhbmQgdGhlIG1pbmltemVyCiAgcmV0dXJuKGxpc3Qob3B0X20sIGxvc3NfdmVjLCBkZikpCn0KYGBgCgpgYGB7cn0KIycgRnVuY3Rpb24gdGhhdCBzZWxlY3RzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBsYWdzCiMnCiMnIEBwYXJhbSB5IC0gcmVzcG9uc2UgdmVjdG9yCiMnIEBwYXJhbSB4IC0gcHJlZGljdG9yIHZhcmlhYmxlcwojJyBAcGFyYW0gb3JpZyAtIGZvcmVjYXN0IG9yaWdpbgojJyBAcGFyYW0gZW5kIC0gZW5kaW5nIG9mIHZhbGlkYXRpb24gc2V0CiMnIEBwYXJhbSB0YXUgLSBWYVIgaW4gcXVlc3Rpb24KIycgQHBhcmFtIGxvd19tIC0gbG93IHZhbHVlIG9mIG0gdG8gY29uc2lkZXIKIycgQHBhcmFtIGhpZ2hfbSAtIGhpZ2ggdmFsdWUgb2YgbSB0byBjb25zaWRlcgojJwojJyBAcmV0dXJuIC0gcmV0dXJucyB0aGUgb3B0aW1hbCB2YWx1ZSBvZiBtCiMnIEBleHBvcnQKIycKIycgQGV4YW1wbGVzIC0gb3B0X21wKHkgPSBwY19kZlssMV0sIHggPSBwY19kZlssLTFdLCBvcmlnID0gNzU3LCBlbmQgPSAxMDA3LCB0YXUgPSAwLjAxLCBsb3dfbSA9MSwgaGlnaF9tICA9IDUsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsIGFyX3RmID0gMiwgbW9kX2RpID0gMSkKb3B0X21wID0gZnVuY3Rpb24oeSwgeCwgb3JpZywgZW5kID0gTlVMTCwgdGF1LCBsb3dfbSA9IDEsIGhpZ2hfbSwgbG93X3AgPSAxLCBoaWdoX3AsIG1vZF9kaSA9IDAsIGFyX3RmID0gMSwgcHJpbnRfbWRsID0gMCwgbW9kZWwgPSAxLCBwcmludF9tcCA9IDAsIHJvd25hbWUgPSBOVUxMKXsKICAjIEluaXRpYWxpemUgYSBsb3NzIG1hdHJpeAogIGxvc3NfbWF0ID0gbWF0cml4KDAsIGhpZ2hfcC1sb3dfcCArIDEsaGlnaF9tLWxvd19tICsgMSkKICAjIEluaXRpYWxpemUgYSBwIHZlY3RvcgogIHBfdmVjID0gc2VxKGxvd19wLCBoaWdoX3AsIGJ5ID0gMSkKICAjIExvb3AgdGhyb3VnaCBhbmQgcG9wdWxhdGUgdGhlIGxvc3MgdmVjdG9yCiAgZm9yIChpIGluIDE6bnJvdyhsb3NzX21hdCkpewogICAgbG9zc19tYXRbaSxdID0gb3B0X20oeSA9IHksIHggPSB4LCBvcmlnID0gb3JpZywgZW5kID0gZW5kLCB0YXUgPSB0YXUsIGxvd19tID0gbG93X20sIGhpZ2hfbSAgPSBoaWdoX20sIHAgPSBpLCBtb2RfZGkgPSBtb2RfZGksIGFyX3RmID0gYXJfdGYsIHByaW50X21kbCA9IHByaW50X21kbCwgbW9kZWwgPSBtb2RlbClbWzJdXQogIH0KICAjIEZpbmQgdGhlIG1pbmltaXplcgogIG9wdF9wID0gd2hpY2gobG9zc19tYXQgPT0gbWluKGxvc3NfbWF0KSwgYXJyLmluZCA9IFRSVUUpWzEsMV0KICBvcHRfbSA9IHdoaWNoKGxvc3NfbWF0ID09IG1pbihsb3NzX21hdCksIGFyci5pbmQgPSBUUlVFKVsxLDJdCiAgIyBQcmludCB0aGUgb3B0aW1hbCBwIGFuZCBvcHRpbWFsIG0KICBkZiA9IGFzLmRhdGEuZnJhbWUoY2JpbmQob3B0X20sIG9wdF9wKSkKICBuYW1lcyhkZikgPC0gYygiT3B0aW1hbCBtIiwgIk9wdGltYWwgcCIpCiAgIyBBc3NpZ24gYSByb3duYW1lCiAgaWYgKGlzLm51bGwocm93bmFtZSkgPT0gVFJVRSl7CiAgICBpZiAoYXJfdGYgPT0gMSl7CiAgICAgICMgV3JpdGUgdGhlIHJvdyBuYW1lcwogICAgICByb3duYW1lcyhkZikgPC0gYygiTVYgQ0FWaWFSICsgQVIiKQogICAgfSBlbHNlIGlmIChhcl90ZiA9PSAyKXsKICAgICAgIyBXcml0ZSB0aGUgcm93IG5hbWVzCiAgICAgIHJvd25hbWVzKGRmKSA8LSBjKCJNViBDQVZpYVIgKyBTQVYiKQogICAgfSBlbHNlIGlmIChhcl90ZiA9PSAzKXsKICAgICAgIyBXcml0ZSB0aGUgcm93IG5hbWVzCiAgICAgIHJvd25hbWVzKGRmKSA8LSBjKCJNViBDQVZpYVIgKyBBUyIpCiAgICB9IGVsc2UgewogICAgICByb3duYW1lcyhkZikgPC0gYygiVW5rbm93biBNb2RlbCIpCiAgICB9CiAgfQogIGVsc2UgewogICAgcm93bmFtZXMoZGYpIDwtIHJvd25hbWUKICB9CiAgIyBQcmludCB0aGUgZGYgaWYgdGhlIG9wdGlvbiBpcyB0dXJuZWQgb24KICBpZiAocHJpbnRfbXAgPT0gMSl7CiAgICBwcmludChkZikKICB9CiAgIyBSZXR1cm4gdGhlIGxvc3NfdmVjdG9yIGFuZCB0aGUgbWluaW16ZXIKICByZXR1cm4obGlzdChvcHRfbSwgb3B0X3AsIGxvc3NfbWF0LCBkZikpCn0KYGBgCgoKYGBge3J9CiMnIEEgZnVuY3Rpb24gdGhhdCBjb21iaW5lcyBvcHRpbWFsIHZhbHVlcyBvZiBtIGFuZCBwIGludG8gYSBmaW5hbCB0YWJsZQojJwojJyBAcGFyYW0gbTEgLSB0aGUgZGF0YSBmcmFtZSBmcm9tIHRoZSAiTVYgQ0FWaWFSIiBydW4KIycgQHBhcmFtIG0yIC0gdGhlIGRhdGEgZnJhbWUgZnJvbSB0aGUgIk1WIENBVmlhUiArIEFSIiBydW4KIycgQHBhcmFtIG0zIC0gdGhlIGRhdGEgZnJhbWUgZnJvbSB0aGUgIk1WIENBVmlhUiArIFNBViIgcnVuCiMnIEBwYXJhbSBtNCAtIHRoZSBkYXRhIGZyYW1lIGZyb20gdGhlICJNViBDQVZpYVIgKyBBUyIgcnVuCiMnCiMnIEByZXR1cm4gLSBhIG5pY2VseSBmb3JtYXR0ZWQgdGFibGUKIycgQGV4cG9ydAojJwojJyBAZXhhbXBsZXMgLSBwcmV0dHlfcG0ob3B0X3ByZWRfbmxbWzNdXSwgb3B0X3BtX20xW1s0XV0sIG9wdF9wbV9tMltbNF1dLCBvcHRfcG1fbTNbWzRdXSkKcHJldHR5X3BtID0gZnVuY3Rpb24obTEsIG0yLCBtMywgbTQpewogICMgTWVyZ2UgdGhlIGluZGl2aWR1YWwgZGF0YSBmcmFtZXMKICBwbV9wcmV0dHlfZGYgPSByYmluZChtMSwgbTIsIG0zLCBtNCkKICAjIEZvcm1hdCBuaWNlbHkKICBwbV9wcmV0dHlfZGYgJT4lIGthYmxlKGNhcHRpb24gPSAiT3B0aW1hbCBOdW1iZXIgb2YgRGlmZnVzaW9uIEluZGljZXMgKG0pIGFuZCBMYWdzIChwKSBmb3IgRGlmZmVyZW50IE1vZGVscyIsIGRpZ2l0cyA9IDApICU+JSBrYWJsZV9zdHlsaW5nKCJzdHJpcGVkIiwgZnVsbF93aWR0aCA9IEYpICU+JSBrYWJsZV9zdHlsaW5nKCkgJT4lIGZvb3Rub3RlKGdlbmVyYWwgPSAiVGhlIE1WIENBVmlhUiBtb2RlbCBkb2Vzbid0IGhhdmUgYW4gb3B0aW1hbCB2YWx1ZSBmb3IgcCBiZWNhdXNlIHRoZXJlIGFyZSBubyBBUiBsYWdzIGluIHRoZSBtb2RlbCIKICApCiAgCn0KCmBgYAoKCiMjIE1WIENhdmlhciAtIFJ1bm5pbmcgdGhlIHVuaXZhcmlhdGUgbW9kZWwgbXVsdGlwbGUgdGltZXMKCmBgYHtyfQojJyBIZXJlIGlzIGEgZnVuY3Rpb24gdGhhdCBydW5zIHRoZSB1bml2YXJpYXRlIENBVmlhUiBtb2RlbCA0IHRpbWVzCiMnCiMnIEBwYXJhbSBkZiAtIHRoZSBwZXJjZW50IGNoYW5nZSBkYXRhIGZyYW1lIHRvIGNvbnNpZGVyCiMnIEBwYXJhbSBuZmNzdCAtIG51bWJlciBvZiBmb3JlY2FzdHMgdG8gcnVuCiMnIEBwYXJhbSB0YXUgLSB0aGUgVmFSIGxldmVsIHRvIGNvbnNpZGVyCiMnIEBwYXJhbSBub19ydW4gLSBzcGVjaWZpZXMgaWYgYW55IG1vZGVscyBzaG91bGQgbm90IGJlIHJ1bgojJwojJyBAcmV0dXJuIC0gYSBsaXN0IG9mIHRoZSA0IHVuaXZhcmlhdGUgbW9kZWwgZm9yZWNhc3RzCiMnIEBleHBvcnQKIycKIycgQGV4YW1wbGVzIC0gYWNlZyA9IGdlbl91dl90ZXN0KHBjX2RmLCAxLCAwLjA1LCBub19ydW4gPSBjKDEsMSwwLDEpKQpnZW5fdXZfdGVzdCA9IGZ1bmN0aW9uKGRmLCBuZmNzdCwgdGF1LCBub19ydW4gPSBjKDAsMCwwLDApKXsKICAjIG1vZGVsIHR5cGUgKDEgLSBTQVYsIDIgLSBBUywgMyAtIEdBUkNILCA0IC0gQURBUFRJVkUpIAogICMgSW5pdGlhbGl6ZSBhIGxpc3QgIAogIG91dF9saXN0ID0gbGlzdCgpCiAgIyBSdW4gdGhlIGZvdXIgbW9kZWxzIC0gbW9kZWwgMTsgU0FWCiAgaWYgKG5vX3J1blsxXSA9PSAwKXsKICAgIHV2Y2F2XzEgPSByb2xsaW5nX3ByZWRpY3Rpb25zKGRmWywxXSwgcmFuZ2VfZGF0YSA9ICgxOmxlbmd0aChkZlssMV0pKSwgbmZjc3QgPSBuZmNzdCwgbW9kZWwgPSAxLCBHID0gMTAsIGNvbCA9IDEsIGxldmVsID0gdGF1KQogIH0KICAjIEFkZCBhIGZpbGxlciBpZiB0aGVyZSdzIG5vIGVudHJ5CiAgZWxzZSB7CiAgICB1dmNhdl8xID0gMAogIH0KICAjIE1vZGVsIDIgLSBBUwogIGlmIChub19ydW5bMl0gPT0gMCl7CiAgICB1dmNhdl8yID0gcm9sbGluZ19wcmVkaWN0aW9ucyhkZlssMV0sIHJhbmdlX2RhdGEgPSAoMTpsZW5ndGgoZGZbLDFdKSksIG5mY3N0ID0gbmZjc3QsIG1vZGVsID0gMiwgRyA9IDEwLCBjb2wgPSAxLCBsZXZlbCA9IHRhdSkKICB9CiAgZWxzZSB7CiAgICB1dmNhdl8yID0gMAogIH0KICAjIE1vZGVsIDMgLSBHQVJDSAogIGlmIChub19ydW5bM10gPT0gMCl7CiAgICB1dmNhdl8zID0gcm9sbGluZ19wcmVkaWN0aW9ucyhkZlssMV0sIHJhbmdlX2RhdGEgPSAoMTpsZW5ndGgoZGZbLDFdKSksIG5mY3N0ID0gbmZjc3QsIG1vZGVsID0gMywgRyA9IDEwLCBjb2wgPSAxLCBsZXZlbCA9IHRhdSkKICB9CiAgZWxzZSB7CiAgICB1dmNhdl8zID0gMAogIH0KICAjIE1vZGVsIDQgLSBBZGFwdGl2ZQogIGlmIChub19ydW5bNF0gPT0gMCl7CiAgICB1dmNhdl80ID0gcm9sbGluZ19wcmVkaWN0aW9ucyhkZlssMV0sIHJhbmdlX2RhdGEgPSAoMTpsZW5ndGgoZGZbLDFdKSksIG5mY3N0ID0gbmZjc3QsIG1vZGVsID0gNCwgRyA9IDEwLCBjb2wgPSAxLCBsZXZlbCA9IHRhdSkKICB9CiAgZWxzZSB7CiAgICB1dmNhdl80ID0gMAogIH0KICAjIEV4cG9ydCB0aGUgZGF0YSBhcyBhIGxpc3QKICByZXR1cm4obGlzdCh1dmNhdl8xLCB1dmNhdl8yLCB1dmNhdl8zLCB1dmNhdl80KSkKfQoKYGBgCgoKCiMjIE1WIENhdmlhciAtIFBsb3R0aW5nIGZ1bmN0aW9uCgpgYGB7cn0KIycgRnVuY3Rpb24gdG8gcGxvdCB0aGUgZGF0YSB3aGljaCB3ZSBnZW5lcmF0ZSBpbiBwcmV2aW91cyBmdW5jdGlvbnMKIycKIycgQHBhcmFtIHBsb3RfbWF0cml4IC0gbWF0cml4IHdpdGggdGhlIGRhdGEgdG8gcGxvdAojJyBAcGFyYW0gbm9ybV92YWx1ZSAtIHdoYXQgdG8gc3VidGFjdCBmcm9tIHRoZSBkYXRhIHRvIG1ha2UgaXQgb24gYSBwZXJjZW50YWdlIGNoYW5nZSBiYXNpcy4gRGVmYXVsdCBpcyAxMDAuCiMnCiMnIEByZXR1cm4gCiMnIEBleHBvcnQgLSBhIHBsb3Qgb2YgdGhlIGRhdGEgYnkgZGlmZnVzaW9uIGluZGV4IG51bWJlcgojJwojJyBAZXhhbXBsZXMgPSBwbHRfZGF0YShwbG90X210eFtbMV1dKSwgYWJjID0gcGx0X2RhdGEocGxvdF9tYXQsIHRhdSA9IDAuMDEpCnBsdF9kYXRhID0gZnVuY3Rpb24ocGxvdF9tYXRyaXgsIHRhdSwgcmVzcF92YXIsIG50ZXN0KXsKICAjIEVzdGFibGlzaCBhIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWUKICBtYXhfdmFsID0gbWF4KHBsb3RfbWF0cml4WywxOm5jb2wocGxvdF9tYXRyaXgpXSkKICBtaW5fdmFsID0gbWluKHBsb3RfbWF0cml4WywxOm5jb2wocGxvdF9tYXRyaXgpXSkKICAjIENhbGN1bGF0ZSBpbml0YWwgYW5kIGVuZGluZyB0aW1lIHZhbHVlCiAgc3RhcnQgPSBpbmRleChwbG90X21hdHJpeClbMV0KICBlbmQgPSBpbmRleChwbG90X21hdHJpeClbbnJvdyhwbG90X21hdHJpeCldCiAgaW5kX3ZhbHMgPSBpbmRleChwbG90X21hdHJpeCkgLSBzdGFydAogICMgQ3JlYXRlIGFuIGluaXRpYWwgcGxvdCBhbmQgYWRkIGxpbmVzCiAgICBmb3IgKGkgaW4gMTpuY29sKHBsb3RfbWF0cml4KSl7CiAgICAgIGlmIChpID09IDEpewogICAgICAgICMgNC8yLzIwMjAgLSBmaXhpbmcgdGhlIGluZGV4CiAgICAgICAgcGxvdC50cyhpbmRfdmFscyxwbG90X21hdHJpeFssaV0sIHR5cGUgPSAibCIsIHhsYWIgPSBwYXN0ZSgiRGF5cyBTaW5jZSIsIGFzLkRhdGUoc3RhcnQpKSwgeWxhYiA9ICJQZXJjZW50IENoYW5nZSBpbiBQRyIsIHlsaW0gPSBjKG1pbl92YWwsbWF4X3ZhbCksIGx3ZCA9IDEsIG1haW4gPSBwYXN0ZSgiUHJlZGljdGluZyIsIHJlc3BfdmFyLCAiUmV0dXJucyBmcm9tIiwgYXMuRGF0ZShzdGFydCksICJ0byIsIGFzLkRhdGUoZW5kKSksIHN1YiA9IHBhc3RlKCJUaGUgVmFSIExldmVsIGlzICIsIDEwMCp0YXUsICIlIiwgIjsgVGhlcmUgYXJlICIsIG50ZXN0LCAiIFRyYWRpbmcgRGF5cyBQbG90dGVkIEFib3ZlIiwgc2VwID0gIiIpKQogICAgICAgICMgcGxvdC50cyhpbmRleChwbG90X21hdHJpeCksIHBsb3RfbWF0cml4WyxpXSwgdHlwZSA9ICJsIiwgeGxhYiA9ICJUcmFkaW5nIERheXMiLCB5bGFiID0gIlBlcmNlbnQgQ2hhbmdlIGluIFBHIiwgeWxpbSA9IGMobWluX3ZhbCxtYXhfdmFsKSwgbHdkID0gMSwgbWFpbiA9ICJQcmVkaWN0aW5nIFBHIFJldHVybnMgT3ZlciBMYXN0IDI1MCBUcmFkaW5nIERheXMgaW4gMjAwOCIsIHN1YiA9IHBhc3RlKCJUaGUgVmFSIExldmVsIGlzICIsIDEwMCp0YXUsICIlIiwgc2VwID0gIiIpKQogICAgfSBlbHNlIGlmKGkgJWluJSBzZXEoMiw4LDEpKSB7CiAgICAgICAgbGluZXMoaW5kX3ZhbHMscGxvdF9tYXRyaXhbLGldLCBjb2wgPSBpLTEsIGx0eSA9IDIpCiAgICB9IGVsc2UgewogICAgICAgIGxpbmVzKGluZF92YWxzLHBsb3RfbWF0cml4WyxpXSwgY29sID0gaS0xLCBsdHkgPSAyLCBsd2QgPSAyKQogICAgfQogICAgfQogICMgRGVmaW5lIGEgc2VxdWVuY2UgZm9yIHBsb3R0aW5nCiAgcGxvdF9zZXEgPSBzZXEoMSwgbmNvbChwbG90X21hdHJpeCkpCiAgbGVnZW5kKCJ0b3BsZWZ0IiwgbGVnZW5kID0gYyhjb2xuYW1lcyhwbG90X21hdHJpeCkpLCBjb2wgPSBwbG90X3NlcSwgbHR5ID0gYygxLCByZXAoMiwgNyksIHJlcCgzLCBpZmVsc2UobmNvbChwbG90X21hdHJpeCktOCA8PSAwLCAwLCBuY29sKHBsb3RfbWF0cml4KS04KSkpLCBsd2QgPSBjKDEsIHJlcCgxLCA3KSwgcmVwKDIsIGlmZWxzZShuY29sKHBsb3RfbWF0cml4KS04IDw9IDAsIDAsIG5jb2wocGxvdF9tYXRyaXgpLTgpKSkpCiAgIyBBZGQgYSBsaW5lIGZvciAwCiAgIyBhYmxpbmUoaCA9IDAsIGNvbCA9ICJibGFjayIsIGx0eSA9IDIpCn0KCgpgYGAKCiMjIE1WIENhdmlhciAtIE9sZCBMb3NzIFRlc3QgRnVuY3Rpb24KCmBgYHtyfQojJyBBIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBsb3NzZXMgYmFzZWQgb24gdGhlIHRlc3Qgc2FtcGxlCiMnCiMnIEBwYXJhbSB0cnVlX3ZlYyAtIHRoZSB0cnVlIHZlY3RvciBvZiByZXR1cm5zCiMnIEBwYXJhbSBwcmVkX3ZlYyAtIHRoZSBwcmVkaWN0ZWQgdmVjdG9yIGZyb20gdGhlIG1vZGVsIHJ1bnMKIycgQHBhcmFtIHRhdSAtIFZhUiBsZXZlbC4gTXVzdCBtYXRjaCB3aGF0IHRoZSBtb2RlbCB1c2VkCiMnCiMnIEByZXR1cm4gLSB0b3RhbCBsb3NzZXMgYW5kIHRoZSBlbnRpcmUgbG9zcyB2ZWN0b3IKIycgQGV4cG9ydAojJwojJyBAZXhhbXBsZXMKbG9zc190ZXN0ID0gZnVuY3Rpb24odHJ1ZV92ZWMsIHByZWRfdmVjLCB0YXUpewogICMgSW5pdGlhbGl6ZSBhIGxvc3MgdmVjdG9yCiAgbHZlYyA9IHJlcCgwLCBsZW5ndGgodHJ1ZV92ZWMpKQogICMgSW5pdGlhbGl6ZSBhIGJyZWFrIHZlY3RvciB0byBzZWUgd2hlbiBWYVIgaXMgYnJva2VuCiAgYnZlYyA9IHJlcCgwLCBsZW5ndGgodHJ1ZV92ZWMpKQogIGZvciAoaSBpbiAxOmxlbmd0aCh0cnVlX3ZlYykpewogICAgIyBDYWxjdWxhdGUgYW4gaW5kaWNhdG9yIHZhcmlhYmxlCiAgICBidmVjW2ldID0gaWZlbHNlKHRydWVfdmVjW2ldIDwgcHJlZF92ZWNbaV0sIDEsMCkKICAgICMgVXNlIGluZGljYXRvciBpbiBmdW5jdGlvbiBiZWxvdwogICAgbHZlY1tpXSA9ICh0YXUgLSBidmVjW2ldKSoodHJ1ZV92ZWNbaV0gLSBwcmVkX3ZlY1tpXSkKICB9CiAgIyBBZGQgdXAgdGhlIGxvc3NlcwogICMgc3VtbG9zcyA9IHN1bShsdmVjKS9sZW5ndGgobHZlYykKICBzdW1sb3NzID0gc3VtKGx2ZWMpCiAgIyBBZGQgdXAgdGhlIFZhUiBicmVha2FnZQogIHZhcmJyZWFrID0gc3VtKGJ2ZWMpL2xlbmd0aChidmVjKQogIHJldHVybihsaXN0KHN1bWxvc3MsbHZlYywgdmFyYnJlYWssIGJ2ZWMpKQp9CmBgYAoKCgojIyBNViBDYXZpYXIgLSBBIGdlbmVyYWxpemVkIGxvc3MgY2FsY3VsYXRpb24gZnVuY3Rpb24KCmBgYHtyfQojJyBBIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBsb3NzZXMgYmFzZWQgb24gdGhlIHBsb3QgbWF0cml4CiMnCiMnIEBwYXJhbSBkYXRhX21hdCAtIGEgbWF0cml4IG9mIGZvcmVjYXN0ZWQgVmFSIHZhbHVlcywgd2l0aCB0aGUgdHJ1ZSB2YWx1ZSBpbiB0aGUgZmlyc3QgY29sdW1uCiMnIEBwYXJhbSB0YXUgLSBWYVIgbGV2ZWwuIE11c3QgbWF0Y2ggd2hhdCB0aGUgbW9kZWwgdXNlZAojJwojJyBAcmV0dXJuIC0gYSBsaXN0IG9mIGZvdXIgaXRlbXMuIAojJyAxID0gYSB2ZWN0b3Igb2YgdGhlIGxvc3NlcyBvZiBhbGwgbW9kZWxzLiAKIycgMiA9IGEgdmVjdG9yIHNob3dpbmcgdGhlIHBlcmNlbnRhZ2Ugb2YgVmFSIGJyZWFrcyBieSBtb2RlbAojJyAzID0gdGhlIGxvc3MgbWF0cml4CiMnIDQgPSB0aGUgYnJlYWsgbWF0cml4CiMnIEBleHBvcnQKIycKIycgQGV4YW1wbGVzCmdlbl9sb3NzX3Rlc3QgPSBmdW5jdGlvbihkYXRhX21hdCwgdGF1KXsKICAjIEluaXRpYWxpemUgbG9zcyBhbmQgYnJlYWsgbWF0cmljZXMKICBsbWF0ID0gYm1hdCA9IG1hdHJpeCgwLCBucm93ID0gbnJvdyhkYXRhX21hdCksIG5jb2wgPSBuY29sKGRhdGFfbWF0KS0xKQogICMgYnZlYyA9IHJlcCgwLCBsZW5ndGgodHJ1ZV92ZWMpKQogICMgUG9wdWxhdGUgdGhlIG1hdHJpY2VzCiAgZm9yIChpIGluIDE6bnJvdyhsbWF0KSl7CiAgICBmb3IgKGogaW4gMToobmNvbChsbWF0KSkpewogICAgICAjIENhbGN1bGF0ZSBhbiBpbmRpY2F0b3IgdmFyaWFibGUKICAgICAgYm1hdFtpLGpdID0gaWZlbHNlKGRhdGFfbWF0W2ksMV0gPCBkYXRhX21hdFtpLGorMV0sIDEsMCkKICAgICAgIyBVc2UgaW5kaWNhdG9yIGluIGZ1bmN0aW9uIGJlbG93CiAgICAgIGxtYXRbaSxqXSA9ICh0YXUgLSBibWF0W2ksal0pKihkYXRhX21hdFtpLDFdIC0gZGF0YV9tYXRbaSxqKzFdKQogICAgfSAgICAKICB9CiAgIyBBZGQgdXAgdGhlIGxvc3NlcwogIHN1bWxvc3MgPSBjb2xTdW1zKGxtYXQpCiAgIyBBZGQgdXAgdGhlIFZhUiBicmVha2FnZQogIHZhcmJyZWFrID0gY29sU3VtcyhibWF0KS9ucm93KGJtYXQpCiAgcmV0dXJuKGxpc3Qoc3VtbG9zcywgdmFyYnJlYWssIGxtYXQsIGJtYXQpKQp9CmBgYAoKCiMjIE1WIENhdmlhciAtIFRhYmxlcyBmdW5jdGlvbgoKYGBge3J9CiMnIEEgZnVuY3Rpb24gdG8gbWFrZSBhIG5pY2UgY29tcGFyaXNvbiBvZiBsb3NzZXMKIycKIycgQHBhcmFtIGRhdGFfbWF0IC0gaW5wdXQgZGF0YSBtYXRyaXggdXNlZCBpbiB0aGUgY2FsY3VsYXRpb24gb2YgbG9zc2VzCiMnIEBwYXJhbSBsb3NzX2xpc3QgLSBhIGxpc3Qgb2YgdGhlIGxvc3NlcyBjYWxjdWxhdGVkIGZyb20gdGhlIENBVmlhUiBmdW5jdGlvbgojJyBAcGFyYW0gdGF1IC0gdGhlIHJpc2sgbGV2ZWwgdXNlZAojJyBAcGFyYW0gbnRlc3QgLSB0aGUgbnVtYmVyIG9mIHRlc3QgcG9pbnRzCiMnCiMnIEByZXR1cm4KIycgQGV4cG9ydCAtIHJldHVybnMgYSBuaWNlbHkgZm9ybWF0dGVkIHRhYmxlCiMnCiMnIEBleGFtcGxlcyAtIHByZXR0eV90YWJsZXMocGxvdF9tYXQsIGxfbGlzdCwgdGF1ID0gMC4wMSkKcHJldHR5X3RhYmxlcyA9IGZ1bmN0aW9uKGRhdGFfbWF0LCBsb3NzX2xpc3QsIHRhdSwgbnRlc3QpewogICMgQ29tYmluZSBpbnRvIGEgZGF0YSBmcmFtZQogIGRmID0gYXMuZGF0YS5mcmFtZShyYmluZChsb3NzX2xpc3RbWzFdXSwgbG9zc19saXN0W1syXV0pKQogICMgQ2FsY3VsYXRlIGluaXRhbCBhbmQgZW5kaW5nIHRpbWUgdmFsdWUKICBzdGFydCA9IGluZGV4KGRhdGFfbWF0KVsxXQogIGVuZCA9IGluZGV4KGRhdGFfbWF0KVtucm93KGRhdGFfbWF0KV0KICAjIEFkZCByb3cvY29sdW1uIG5hbWVzCiAgY29sbmFtZXMoZGYpIDwtIGNvbG5hbWVzKGRhdGFfbWF0WywtMV0pCiAgcm93bmFtZXMoZGYpIDwtIGMoIkxvc3NlcyIsICJWYVIgQnJlYWtzICglKSIpCiAgIyBDb252ZXJ0IHRvIGEgdGFibGUKICBkZiAlPiUga2FibGUoY2FwdGlvbiA9IHBhc3RlKCJDb21wYXJpc29uIG9mIFZhUiBNZXRob2RzIGZvciBhICIsIHRhdSoxMDAsICIlIFZhUiIsIHNlcCA9ICIiKSwgZGlnaXRzID0gMykgJT4lIGthYmxlX3N0eWxpbmcoInN0cmlwZWQiLCBmdWxsX3dpZHRoID0gRikgJT4lIGthYmxlX3N0eWxpbmcoKSAlPiUgZm9vdG5vdGUoZ2VuZXJhbCA9IHBhc3RlKCJDYWxjdWxhdGVkIHVzaW5nIiwgbnRlc3QsICJ0cmFkaW5nIGRheXMgZnJvbSIsIGFzLkRhdGUoc3RhcnQpLCAidG8iLCBhcy5EYXRlKGVuZCkpKQp9CmBgYAoKCgoKIyMgRXhwb3J0IGZ1bmN0aW9uCgoKCgpgYGB7cn0KIycgQSBkcmVzc2VkIHVwIHZlcnNpb24gb2YgdGhlIGV4cG9ydCBmdW5jdGlvbgojJwojJyBAcGFyYW0gdmFyX2ZpbGUgLSBmaWxlIHRvIGV4cG9ydAojJyBAcGFyYW0gcGF0aCAtIGZpbGVwYXRoCiMnIEBwYXJhbSBmaWxlbmFtZSAtIG5hbWUgb2YgdGhlIGZpbGUsIGVuZGluZyB3aXRoIC5DU1YKIycKIycgQHJldHVybgojJyBAZXhwb3J0IC0gZXhwb3J0ZWQgQ1NWIGZpbGUKIycKIycgQGV4YW1wbGVzIC0gZXhwX2Z1bmModmFyX2ZpbGUgPSB2YXJfMXBjXzIwMTZfdXNldGZbWzFdXSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX1VTX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gIlRFU1QuY3N2IikKZXhwX2Z1bmMgPSBmdW5jdGlvbih2YXJfZmlsZSwgcGF0aCwgZmlsZW5hbWUpewogICMgV3JpdGUgYSB6b28KICB3cml0ZS56b28odmFyX2ZpbGUsIHBhc3RlMChwYXRoLCBmaWxlbmFtZSksIHF1b3RlID0gRkFMU0UsIHNlcCA9ICIsIikKfQoKIyBleHBfZnVuYyh2YXJfZmlsZSA9IHZhcl8xcGNfMjAxNl91c2V0ZltbMV1dLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfVVNfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAiVEVTVC5jc3YiKQoKYGBgCgoKCgojIEJpZyBTaW11bGF0aW9uIEZ1bmN0aW9uCgpgYGB7cn0KIycgVGhpcyBpcyB0aGUgIm1hc3RlciIgZnVuY3Rpb24gd2hlcmUgd2UnbGwgZXZhbHVhdGUgdGhlIGltcG9ydGFuY2Ugb2YgdGhlIFZhUiBtb2RlbCBvdmVyIHNldmVyYWwgdGltZSBwZXJpb2RzCiMnCiMnIEBwYXJhbSBzeW1ib2xfbGlzdCAtIGEgbGlzdCBvZiBzeW1ib2xzIHRvIGZlZWQgaW50byB0aGUgbW9kZWwgCiMnIEBwYXJhbSByZXNwX3ZhciAtIHRoZSByZXNwb25zZSB2YXJpYWJsZQojJyBAcGFyYW0gY29tcGxfY2FzZSAtIHNob3VsZCB0aGUgbW9kZWwgcmVxdWlyZSBjb21wbGV0ZSBjYXNlcz8gRGVmYXVsdCB2YWx1ZSBpcyAxLgojJyBAcGFyYW0gYWRqX2Nsb3NlIC0gdXNlIGFkanVzdGVkIGNsb3NlIHByaWNlIGZvciB0aGUgcHJlZGljdG9ycz8gRGVmYXVsdCB2YWx1ZSBpcyAxLgojJyBAcGFyYW0gcmVzcF9hZGpfY2xvc2UgLSB1c2UgYWRqdXN0ZWQgY2xvc2UgcHJpY2UgZm9yIHRoZSByZXNwb25zZT8gRGVmYXVsdCB2YWx1ZSBpcyAxLgojJyBAcGFyYW0gc3RhcnRfZGF0ZSAtIHN0YXJ0IGRhdGUgdG8gcHVsbCBkYXRhIGZyb20KIycgQHBhcmFtIGVuZF9kYXRlIC0gZW5kIGRhdGUgdG8gcHVsbCBkYXRhIGZyb20KIycgQHBhcmFtIG52YWwgLSBudW1iZXIgb2YgdmFsaWRhdGlvbiBwb2ludHMgdG8gdXNlCiMnIEBwYXJhbSBudGVzdCAtIG51bWJlciBvZiB0ZXN0IHBvaW50cyB0byB1c2UKIycgQHBhcmFtIHRhdSAtIFZhUiBsZXZlbCB0byB1c2UKIycgQHBhcmFtIGxvd19tIC0gbG93IG51bWJlciBvZiBwcmVkaWN0b3JzIHRvIHRlc3QKIycgQHBhcmFtIGhpZ2hfbSAgLSBsb3cgbnVtYmVyIG9mIHByZWRpY3RvcnMgdG8gdGVzdAojJyBAcGFyYW0gdXZfbGlzdCAtIGEgbGlzdCBvZiBhIHByZS1ydW4gdW5pdmFyaWF0ZSBtb2RlbC4gSWYgYSBkYXRhIGZyYW1lIGlzIG5vdCBwcm92aWRlZCwgdGhlIGxlbmd0aHkgdXYgbW9kZWwgd2lsbCBydW4gCiMnIEBwYXJhbSBub19ydW4gLSB0aGluZ3Mgbm90IHRvIHJ1biBpbiB0aGUgbW9kZWwKIycgQHBhcmFtIGxvd19wIC0gbG93IHZhbHVlIGZvciBudW1iZXIgb2YgbGFncwojJyBAcGFyYW0gaGlnaF9wIC0gaGlnaCB2YWx1ZSBmb3IgbnVtYmVyIG9mIGxhZ3MKIycgQHBhcmFtIG5hX2ludGVycCAtIHNob3VsZCB0aGUgZnVuY3Rpb24gaW50ZXJwb2xhdGUgTkEncwojJyBAcGFyYW0gcHJpbnRfbWRsIC0gcHJpbnQgdGhlIG1vZGVsIHN1bW1hcmllcz8KIycgQHBhcmFtIHByaW50X21wIC0gcHJpbnQgdGhlIG9wdGltYWwgdmFsdWVzIGZvciBwIGFuZCBtCiMnIEBwYXJhbSBsYWdfcHJlZCAtIGRvIHlvdSB3YW50IHRvIGxhZyB0aGUgbSBwcmVkaWN0b3JzIChkZWZhdWx0IGlzIDE7IHN0cm9uZ2x5IHJlY29tbWVuZGVkKQojJyBAcGFyYW0gcm93bmFtZSAtIHdoYXQgdG8gbmFtZSB0aGUgcm93cyBvZiB0aGUgbmljZSBwIGFuZCBtIG1hdHJpeAojJyBAcGFyYW0gZXhwb3J0X2NzdiAtIGRvIHlvdSB3YW50IHRvIGV4cG9ydCBhIENTVj8gRGVmYXVsdCBpcyAxLgojJyBAcGFyYW0gcGF0aCAtIHBhdGggdG8gZXhwb3J0IHRoZSBDU1YKIycgQHBhcmFtIGZpbGVuYW1lIC0gd2hhdCB0byBuYW1lIHRoZSBDU1YKIycKIycgQHJldHVybiAtIGEgbGlzdCBvZiB0aGUgcGxvdCBtYXRyaXgsIGEgcGxvdCwgYSBsaXN0IHdpdGggbG9zc2VzLCBhbmQgYSB0YWJsZQojJyBAZXhwb3J0IC0gYSBwbG90IGFuZCBhIHRhYmxlCiMnCiMnIEBleGFtcGxlcyAtIGNhdl9zaW11bChjKCJESVMiLCAiR0UiLCAiSUJNIiwgIk1NTSIsICJYT00iKSwgcmVzcF92YXIgPSAiUEciLCBzdGFydF9kYXRlID0gIjIwMDQtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDA4LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNSwgdGF1ID0gMC4wMSwgdXZfbGlzdCA9IHV2X2Nhdl9saXN0KQpjYXZfc2ltdWwgPSBmdW5jdGlvbihzeW1ib2xfbGlzdCwgcmVzcF92YXIsIGNvbXBsX2Nhc2UgPSAxLCBhZGpfY2xvc2UgPSAxLCByZXNwX2Fkal9jbG9zZSA9IDEsIHN0YXJ0X2RhdGUgPSAiMTkwMC0wMS0wMSIsIGVuZF9kYXRlID0gU3lzLkRhdGUoKSwgbnZhbCwgbnRlc3QsIHRhdSwgbG93X20gPSAxLCBoaWdoX20sIGxvd19wID0gMSwgaGlnaF9wLCB1dl9saXN0ID0gTlVMTCwgbm9fcnVuID0gYygwLDAsMCwwKSwgbmFfaW50ZXJwID0gVFJVRSwgcHJpbnRfbWRsID0gMCwgcHJpbnRfbXAgPSAwLCBsYWdfcHJlZCA9IDEsIHJvd25hbWUgPSBOVUxMLCBleHBvcnRfY3N2ID0gMSwgcGF0aCwgZmlsZW5hbWUpewogICMgU2VsZWN0IGRhdGEgcGFyYW1ldGVycywgcHVsbCB0aGUgZGF0YSwgYW5kIHBlcmNlbnQgY2hhbmdlIHRoZSBkYXRhCiAgZGYgPSBkaWZmX2luZGV4X2RmKHN5bWJvbF9saXN0ID0gc3ltYm9sX2xpc3QsIHJlc3BfdmFyID0gcmVzcF92YXIsIGNvbXBsX2Nhc2UgPSBjb21wbF9jYXNlLCBhZGpfY2xvc2UgPSBhZGpfY2xvc2UsIHJlc3BfYWRqX2Nsb3NlID0gcmVzcF9hZGpfY2xvc2UsIHN0YXJ0X2RhdGUgPSBzdGFydF9kYXRlLCBlbmRfZGF0ZSA9IGVuZF9kYXRlLCBsYWdfcHJlZCA9IGxhZ19wcmVkKQogICMgVGFrZSB0aGUgcGVyY2VudCBjaGFuZ2Ugb2YgdGhlIGRhdGEKICBwY19kZiA9IHBjX2RpZmZfaW5kZXgoZGYpCiAgIyBFeHRyYWN0IHRoZSBsZWdudGggb2YgdGhlIGRhdGEgZnJhbWUKICBuciA9IHRlc3RfZW5kID0gbnJvdyhwY19kZikKICAjIENhbGN1bGF0ZSB0aGUgc3RhcnQgb2YgdGhlIHZhbCBwZXJpb2QsIHRoZSBlbmQgb2YgdGhlIHZhbCBwZXJpb2QsIGFuZCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGVzdCBwZXJpb2QKICB0ZXN0X29yaWcgPSB0ZXN0X2VuZCAtIG50ZXN0CiAgdmFsX2VuZCA9IHRlc3Rfb3JpZwogIHZhbF9vcmlnID0gdGVzdF9vcmlnIC0gbnZhbAogICMgVGVzdCBmb3IgdGhlIG9wdGltYWwgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICBvcHRfcHJlZF9ubCA9IG9wdF9tKHkgPSBwY19kZlssMV0sIHggPSBwY19kZlssLTFdLCBvcmlnID0gdmFsX29yaWcsIGVuZCA9IHZhbF9lbmQsIHRhdSA9IHRhdSwgbG93X20gPSBsb3dfbSwgaGlnaF9tID0gaGlnaF9tLCByb3duYW1lID0gcm93bmFtZSkKICBvcHRfcHJlZF9hcnQxID0gb3B0X21wKHkgPSBwY19kZlssMV0sIHggPSBwY19kZlssLTFdLCBvcmlnID0gdmFsX29yaWcsIGVuZCA9IHZhbF9lbmQsIHRhdSA9IHRhdSwgbG93X20gPSBsb3dfbSwgaGlnaF9tID0gaGlnaF9tLCBsb3dfcCA9IGxvd19wLCBoaWdoX3AgPSBoaWdoX3AsbW9kX2RpID0gMSwgYXJfdGYgPSAxLCBwcmludF9tZGwgPSBwcmludF9tZGwsIHByaW50X21wID0gcHJpbnRfbXAsIHJvd25hbWUgPSByb3duYW1lKQogIG9wdF9wcmVkX2FydDIgPSBvcHRfbXAoeSA9IHBjX2RmWywxXSwgeCA9IHBjX2RmWywtMV0sIG9yaWcgPSB2YWxfb3JpZywgZW5kID0gdmFsX2VuZCwgdGF1ID0gdGF1LCBsb3dfbSA9IGxvd19tLCBoaWdoX20gPSBoaWdoX20sIGxvd19wID0gbG93X3AsIGhpZ2hfcCA9IGhpZ2hfcCxtb2RfZGkgPSAxLCBhcl90ZiA9IDIsIHByaW50X21kbCA9IHByaW50X21kbCwgcHJpbnRfbXAgPSBwcmludF9tcCwgcm93bmFtZSA9IHJvd25hbWUpCiAgb3B0X3ByZWRfYXJ0MyA9IG9wdF9tcCh5ID0gcGNfZGZbLDFdLCB4ID0gcGNfZGZbLC0xXSwgb3JpZyA9IHZhbF9vcmlnLCBlbmQgPSB2YWxfZW5kLCB0YXUgPSB0YXUsIGxvd19tID0gbG93X20sIGhpZ2hfbSA9IGhpZ2hfbSwgbG93X3AgPSBsb3dfcCwgaGlnaF9wID0gaGlnaF9wLCBtb2RfZGkgPSAxLCBhcl90ZiA9IDMsIHByaW50X21kbCA9IHByaW50X21kbCwgcHJpbnRfbXAgPSBwcmludF9tcCwgcm93bmFtZSA9IHJvd25hbWUpCiAgIyBnZW5fdXZfdGVzdChwY19kZiwgMSwgMC4wNSwgbm9fcnVuID0gYygxLDEsMCwxKSkKICAjIFVzZSB0aGUgYWJvdmUgZm9yZWNhc3RzIHRvIGlucHV0IGludG8gdGhlIGFib3ZlCiAgbXZfZmNzdCA9IG1vZF9kaShwY19kZlssMV0sIHBjX2RmWywtMV0sIG9yaWcgPSB0ZXN0X29yaWcsIG0gPSBvcHRfcHJlZF9ubFtbMV1dLCB0YXUgPSB0YXUsIHByaW50X21kbCA9IHByaW50X21kbCkKICBtdl9mY3N0X2FydDEgPSBtb2RfZGlfd2wocGNfZGZbLDFdLCBwY19kZlssLTFdLCBvcmlnID0gdGVzdF9vcmlnLCBtID0gb3B0X3ByZWRfYXJ0MVtbMV1dLCBwID0gb3B0X3ByZWRfYXJ0MVtbMl1dLCB0YXUgPSB0YXUsIGFyX3RmID0gMSwgcHJpbnRfbWRsID0gcHJpbnRfbWRsKQogIG12X2Zjc3RfYXJ0MiA9IG1vZF9kaV93bChwY19kZlssMV0sIHBjX2RmWywtMV0sIG9yaWcgPSB0ZXN0X29yaWcsIG0gPSBvcHRfcHJlZF9hcnQyW1sxXV0sIHAgPSBvcHRfcHJlZF9hcnQyW1syXV0sIHRhdSA9IHRhdSwgYXJfdGYgPSAyLCBwcmludF9tZGwgPSBwcmludF9tZGwpCiAgbXZfZmNzdF9hcnQzID0gbW9kX2RpX3dsKHBjX2RmWywxXSwgcGNfZGZbLC0xXSwgb3JpZyA9IHRlc3Rfb3JpZywgbSA9IG9wdF9wcmVkX2FydDNbWzFdXSwgcCA9IG9wdF9wcmVkX2FydDNbWzJdXSwgdGF1ID0gdGF1LCBhcl90ZiA9IDMsIHByaW50X21kbCA9IHByaW50X21kbCkKICAjIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHByZWRpY3Rpb25zCiAgaWYgKGlzLm51bGwodXZfbGlzdCkgPT0gVFJVRSl7CiAgICAjIFByaW50IGEgd2FybmluZwogICAgcHJpbnQoIldBUk5JTkc6IE5vdCBzdXBwbHlpbmcgYW4gaW5wdXQgZGF0YSBmcmFtZSB3aWxsIHJlcXVpcmUgdGhpcyBmdW5jdGlvbiB0byBydW4gZm9yIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHRpbWUgKDFocispIikKICAgICMgQ2FsbCB0aGUgZnVuY3Rpb24KICAgICMgZ2VuX3V2X3Rlc3QgPSBmdW5jdGlvbihkZiwgbmZjc3QsIHRhdSwgbm9fcnVuID0gYygwLDAsMCwwKSl7CiAgICAjIHByaW50KGhlYWQocGNfZGYpKQogICAgdXZfbGlzdCA9IGdlbl91dl90ZXN0KGRmID0gcGNfZGYsIG5mY3N0ID0gbnRlc3QsIHRhdSA9IHRhdSwgbm9fcnVuID0gbm9fcnVuKQogICAgIyBBZGQgdG8gYSBkYXRhIGZyYW1lCiAgICAjIEluY29ycG9yYXRlIHRoZSByb2xsaW5nIHByZWRpY3Rpb25zIGZ1bmN0aW9uIHJlc3VsdHMgaGVyZQogIHBsb3RfbWF0ID0gY2JpbmQocGNfZGZbKHRlc3Rfb3JpZysxKTpucm93KHBjX2RmKSwxXSwgbXZfZmNzdCR5aGF0WzE6bnRlc3RdLCBtdl9mY3N0X2FydDEkeWhhdFsxOm50ZXN0XSwgbXZfZmNzdF9hcnQyJHloYXRbMTpudGVzdF0sIG12X2Zjc3RfYXJ0MyR5aGF0WzE6bnRlc3RdLCB1dl9saXN0W1sxXV1bKHRlc3Rfb3JpZysxKTp0ZXN0X2VuZF0qKC0xKSwgdXZfbGlzdFtbMl1dWyh0ZXN0X29yaWcrMSk6dGVzdF9lbmRdKigtMSksIHV2X2xpc3RbWzNdXVsodGVzdF9vcmlnKzEpOnRlc3RfZW5kXSooLTEpLCB1dl9saXN0W1s0XV1bKHRlc3Rfb3JpZysxKTp0ZXN0X2VuZF0qKC0xKSkKICB9IGVsc2UgewogICAgIyBBc3NpZ24gdGhlIGNvbHVtbnMgb2YgdGhlIGRhdGEgZnJhbWUKICAgICMgaGVhZCh2YXJfNXBjXzIwMTBfdXNldGZbWzFdXVssNjo5XSkKICAgICMgbW9kZWwgdHlwZSAoMSAtIFNBViwgMiAtIEFTLCAzIC0gR0FSQ0gsIDQgLSBBREFQVElWRSkgCiAgICAjIHRlc3RfZGYgPSBoZWFkKHZhcl81cGNfMjAxMF91c2V0ZltbMV1dWyw2OjldKQogICAgIyB0ZXN0X2RmJFNBVgogICAgIyB0ZXN0X2RmJGBBYnMuIFNsb3BlYAogICAgIyB0ZXN0X2RmJGBJbmQuIEdBUkNIYAogICAgIyB0ZXN0X2RmJEFkYXB0aXZlCiAgICBwbG90X21hdCA9IGNiaW5kKHBjX2RmWyh0ZXN0X29yaWcrMSk6bnJvdyhwY19kZiksMV0sIG12X2Zjc3QkeWhhdFsxOm50ZXN0XSwgbXZfZmNzdF9hcnQxJHloYXRbMTpudGVzdF0sIG12X2Zjc3RfYXJ0MiR5aGF0WzE6bnRlc3RdLCBtdl9mY3N0X2FydDMkeWhhdFsxOm50ZXN0XSwgdXZfbGlzdCRTQVYsIHV2X2xpc3QkYEFicy4gU2xvcGVgLCB1dl9saXN0JGBJbmQuIEdBUkNIYCwgdXZfbGlzdCRBZGFwdGl2ZSkKICB9CiAgIyBDb3VudCB0aGUgTkFzIGFuZCBwcmludCBhIHdhcm5pbmcKICBwcmludChwYXN0ZSgiTk9URTogVGhlcmUgYXJlICIsIHN1bShpcy5uYShwbG90X21hdCkpLCAiIE5BKHMpIGluIHRoZSBkYXRhc2V0Iiwgc2VwID0gIiIpKQogICMgTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIE5BcwogIGlmIChuYV9pbnRlcnAgPT0gVFJVRSl7CiAgICAjIEFzc2lnbiB0aGUgcGxvdCBtYXRyaXggdG8gYSBuZXcgdmFsdWUKICAgIHBsb3RfbWF0X25hIDwtIHBsb3RfbWF0CiAgICAjIFByaW50IGEgd2FybmluZwogICAgcHJpbnQoIldBUk5JTkc6IFRoZXJlIHdlcmUgbWlzc2luZyB2YWx1ZXMgaW4gdGhlIHBsb3QgbWF0cml4LiIpCiAgICAjIEludGVycG9sYXRlIHRoZSBOQSdzCiAgICBmb3IgKGkgaW4gMTpuY29sKHBsb3RfbWF0X25hKSl7CiAgICAgICMgSW50ZXJwb2xhdGUgdGhlIGRhdGEKICAgICAgcGxvdF9tYXRbLGldIDwtIG5hLmFwcHJveChwbG90X21hdF9uYVssaV0pCiAgICB9CiAgfQogICMgbW9kZWwgdHlwZSAoMSAtIFNBViwgMiAtIEFTLCAzIC0gR0FSQ0gsIDQgLSBBREFQVElWRSkKICAjIEFkZCBkZXNjcmlwdGl2ZSB0aXRsZXMgb250byB0aGUgcGxvdF9tYXQKICBjb2xuYW1lcyhwbG90X21hdCkgPC0gYygiUEciLCAiTVYgQ0FWaWFSIiwgIk1WIENBVmlhUiArIEFSIiwgIk1WIENBVmlhUiArIFNBViIsICJNViBDQVZpYVIgKyBBUyIsICJTQVYiLCAiQWJzLiBTbG9wZSIsICJJbmQuIEdBUkNIIiwgIkFkYXB0aXZlIikKICAjIFBsb3QgZXZlcnl0aGluZwogIHBsb3QgPSBwbHRfZGF0YShwbG90X21hdCwgdGF1ID0gdGF1LCByZXNwX3ZhciA9IHJlc3BfdmFyLCBudGVzdCA9IG50ZXN0KQogICMgQ2FsY3VsYXRlIGxvc3NlcwogIGxfbGlzdCA9IGdlbl9sb3NzX3Rlc3QocGxvdF9tYXQsIHRhdSA9IHRhdSkKICAjIFB1dCBpbnRvIHRhYmxlcwogIHRhYmxlcyA9IHByZXR0eV90YWJsZXMocGxvdF9tYXQsIGxfbGlzdCwgdGF1ID0gdGF1LCBudGVzdCA9IG50ZXN0KQogICMgUnVuIHRoZSBmdW5jdGlvbiBmb3Igb3B0aW1hbCBwIGFuZCBtCiAgcG1fdGFibGUgPSBwcmV0dHlfcG0ob3B0X3ByZWRfbmxbWzNdXSwgb3B0X3ByZWRfYXJ0MVtbNF1dLCBvcHRfcHJlZF9hcnQyW1s0XV0sIG9wdF9wcmVkX2FydDNbWzRdXSkKICAjIEV4cG9ydCB0aGUgbWF0cml4CiAgaWYgKGV4cG9ydF9jc3YgPT0gMSl7CiAgICBleHBfZnVuYyh2YXJfZmlsZSA9IHBsb3RfbWF0LCBwYXRoLCBmaWxlbmFtZSkKICB9CiAgIyBQcmludCB0aGUgdGFibGVzIGFuZCB0aGUgcGxvdAogIHByaW50KHBsb3QpCiAgcHJpbnQodGFibGVzKQogIHByaW50KHBtX3RhYmxlKQogIHJldHVybihsaXN0KHBsb3RfbWF0LCBwbG90LCBsX2xpc3QsIHRhYmxlcywgcGxvdF9tYXRfbmEsIHBtX3RhYmxlKSkKfQpgYGAKCgoKIyBTZWN0b3IgRVRGcyBhcyBFeHBsYW5hdG9yeSBWYXJpYWJsZXMKCkhlcmUncyB3aGF0IEknbSB0aGlua2luZy4KCkxvd2VzdCBsZXZlbDogMSUsIDUlLCAxMCUgVmFSCk5leHQsIDIwMDgsIDIwMTAsIDIwMTQsIG9yIDIwMTYKSGlnaGVzdCAtIEVURiBjaG9pY2VzCjMgeCA0IHggNSA9IDYwIHJ1bnMKCmBgYHtyfQojIEltcG9ydCB0aGUgZGF0YSBmcm9tIENTVidzCgojIGFiYyA9IHJlYWQuY3N2KCIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX1VTX0VURl9ydW5zL3Zhcl8xcGNfMjAwOF91c2V0Zi5jc3YiLCBzZXAgPSAiLCIsIGhlYWRlciA9IFQpCiMgaGVhZChhYmMpCiMgYXMueHRzKGFiYywgb3JkZXIuYnkgPSBhYmNbLDFdKQoKIyB0ZXN0MSA8LSByZWFkLnpvbygiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9VU19FVEZfcnVucy92YXJfMXBjXzIwMDhfdXNldGYuY3N2Iiwgc2VwID0gIiwiLCAgaW5kZXguY29sdW1uID0wLCBoZWFkZXIgPSBUKQojIGRhdF96b28gPC0gcmVhZC56b28oIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfVVNfRVRGX3J1bnMvdmFyXzFwY18yMDA4X3VzZXRmLmNzdiIsIGluZGV4LmNvbHVtbj0wLCBzZXA9IiwiLCBoZWFkZXIgPSBULCBmb3JtYXQ9IiVtLyVkLyVZIikKIyBkYXRfem9vIDwtIHJlYWQuem9vKCIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX1VTX0VURl9ydW5zL3Zhcl8xcGNfMjAwOF91c2V0Zi5jc3YiLCBpbmRleC5jb2x1bW49MCwgc2VwPSIsIiwgaGVhZGVyID0gVCwgRlVOPWFzLnllYXJtb24pCiMgdGVzdDEKIyBkYXRfeHRzID0gYXMueHRzKGRhdF96b28sIG9yZGVyLmJ5ID0gZGF0X3pvb1ssMV0pCgpgYGAKCgojIyAyMDA4IEVuZGluZwoKIyMjIFUuUy4gRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAwOCAtIDFzdCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMDhfdXNfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMDgtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA5LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLCB0YXUgPSAwLjAxLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9VU19FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMDhfdXNfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMDhfdXNldGZbWzFdXSkKCnZhcl81cGNfMjAwOF91c19ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDksIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfVVNfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzVwY18yMDA4X3VzX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDA4X3VzZXRmW1sxXV0pCgp2YXJfMTBwY18yMDA4X3VzX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDQtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDA4LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gOSwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjEwLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9VU19FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMTBwY18yMDA4X3VzX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAwOF91c2V0ZltbMV1dKQpgYGAKCiMjIyBHbG9iYWwgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAwOCAtIDJuZCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMDhfZ2xvYl9ldGYgPSBjYXZfc2ltdWwoYygiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMDgtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAxMCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCwgdGF1ID0gMC4wMSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfZ2xvYl9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMDhfZ2xvYl9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xcGNfMjAwOF91c2V0ZltbMV1dKQoKdmFyXzVwY18yMDA4X2dsb2JfZXRmID0gY2F2X3NpbXVsKGMoIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDQtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDA4LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMTAsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfZ2xvYl9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfNXBjXzIwMDhfZ2xvYl9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl81cGNfMjAwOF91c2V0ZltbMV1dKQoKdmFyXzEwcGNfMjAwOF9nbG9iX2V0ZiA9IGNhdl9zaW11bChjKCJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDEwLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2dsb2JfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAwOF9nbG9iX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAwOF91c2V0ZltbMV1dKQpgYGAKCiMjIyBDb21tb2RpdHkgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAwOCAtIDNyZCBzZXQgb2YgcHJlZGljdG9ycwojIHZhcl8xcGNfMjAwOF9jb21tX2V0ZiA9IGNhdl9zaW11bChjKCJEQkEiLCAiREJDIiwgIkRCRSIsICJEQkIiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDQsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsIHRhdSA9IDAuMDEsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2NvbW1fRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzFwY18yMDA4X2NvbW1fZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMDhfdXNldGZbWzFdXSkKCiMgdmFyXzVwY18yMDA4X2NvbW1fZXRmID0gY2F2X3NpbXVsKGMoIkRCQSIsICJEQkMiLCAiREJFIiwgIkRCQiIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDQtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDA4LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjA1LCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9jb21tX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl81cGNfMjAwOF9jb21tX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDA4X3VzZXRmW1sxXV0pCgojIHZhcl8xMHBjXzIwMDhfY29tbV9ldGYgPSBjYXZfc2ltdWwoYygiREJBIiwgIkRCQyIsICJEQkUiLCAiREJCIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMDgtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2NvbW1fRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAwOF9jb21tX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAwOF91c2V0ZltbMV1dKQpgYGAKCgoKIyMjIEJvbmQgRVRGcwoKYGBge3J9CiMgaVNoYXJlcyAxLTMgWWVhciBUcmVhc3VyeSBCb25kIEZ1bmQgKFNIWSkKIyBpU2hhcmVzIDctMTAgWWVhciBUcmVhc3VyeSBCb25kIEZ1bmQgKElFRikKIyBpU2hhcmVzIDIwKyBZZWFyIFRyZWFzdXJ5IEJvbmQgRnVuZCAoVExUKQojIGlTaGFyZXMgaUJveHggJCBJbnZlc3RtZW50IEdyYWRlIENvcnBvcmF0ZSBCb25kIEVURiAoTFFEKQoKIyAxJSwgNSUsIDEwJSBWYVIgLSAyMDA4IC0gNHRoIHNldCBvZiBwcmVkaWN0b3JzCnZhcl8xcGNfMjAwOF9ib25kX2V0ZiA9IGNhdl9zaW11bChjKCJTSFkiLCAiSUVGIiwgIlRMVCIsICJMUUQiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDQsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsIHRhdSA9IDAuMDEsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2JvbmRfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzFwY18yMDA4X2JvbmRfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMDhfdXNldGZbWzFdXSkKCnZhcl81cGNfMjAwOF9ib25kX2V0ZiA9IGNhdl9zaW11bChjKCJTSFkiLCAiSUVGIiwgIlRMVCIsICJMUUQiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDQsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYm9uZF9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfNXBjXzIwMDhfYm9uZF9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl81cGNfMjAwOF91c2V0ZltbMV1dKQoKdmFyXzEwcGNfMjAwOF9ib25kX2V0ZiA9IGNhdl9zaW11bChjKCJTSFkiLCAiSUVGIiwgIlRMVCIsICJMUUQiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDQsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4xMCwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYm9uZF9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMTBwY18yMDA4X2JvbmRfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMTBwY18yMDA4X3VzZXRmW1sxXV0pCmBgYAoKIyMjIEFsbCBFVEZzCgpgYGB7cn0KIyAxJSwgNSUsIDEwJSBWYVIgLSAyMDA4IC0gNXRoIHNldCBvZiBwcmVkaWN0b3JzCnZhcl8xcGNfMjAwOF9hbGxfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiwgIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIsICJTSFkiLCAiSUVGIiwgIlRMVCIsICJMUUQiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDIzLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLCB0YXUgPSAwLjAxLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9hbGxfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzFwY18yMDA4X2FsbF9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xcGNfMjAwOF91c2V0ZltbMV1dKQoKdmFyXzVwY18yMDA4X2FsbF9ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiLCAiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiwgIlNIWSIsICJJRUYiLCAiVExUIiwgIkxRRCIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDQtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDA4LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMjMsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYWxsX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl81cGNfMjAwOF9hbGxfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfNXBjXzIwMDhfdXNldGZbWzFdXSkKCnZhcl8xMHBjXzIwMDhfYWxsX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIsICJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiLCAiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMDgtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAyMywgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjEwLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9hbGxfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAwOF9hbGxfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMTBwY18yMDA4X3VzZXRmW1sxXV0pCmBgYAoKIyMgMjAxMCBFbmRpbmcKCiMjIyBVLlMuIEVURnMKCmBgYHtyfQojIDElLCA1JSwgMTAlIFZhUiAtIDIwMTAgLSAxc3Qgc2V0IG9mIHByZWRpY3RvcnMKdmFyXzFwY18yMDEwX3VzX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDYtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDEwLTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gOSwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCwgdGF1ID0gMC4wMSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfVVNfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzFwY18yMDEwX3VzX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzFwY18yMDEwX3VzZXRmW1sxXV0pCgp2YXJfNXBjXzIwMTBfdXNfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTAtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA5LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMDUsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX1VTX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl81cGNfMjAxMF91c19ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl81cGNfMjAxMF91c2V0ZltbMV1dKQoKdmFyXzEwcGNfMjAxMF91c19ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA2LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxMC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDksIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4xMCwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfVVNfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAxMF91c19ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xMHBjXzIwMTBfdXNldGZbWzFdXSkKYGBgCgojIyMgR2xvYmFsIEVURnMKCmBgYHtyfQojIDElLCA1JSwgMTAlIFZhUiAtIDIwMTAgLSAybmQgc2V0IG9mIHByZWRpY3RvcnMKdmFyXzFwY18yMDEwX2dsb2JfZXRmID0gY2F2X3NpbXVsKGMoIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDYtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDEwLTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMTAsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsIHRhdSA9IDAuMDEsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2dsb2JfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzFwY18yMDEwX2dsb2JfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMTBfdXNldGZbWzFdXSkKCnZhcl81cGNfMjAxMF9nbG9iX2V0ZiA9IGNhdl9zaW11bChjKCJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA2LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxMC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDEwLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMDUsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2dsb2JfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzVwY18yMDEwX2dsb2JfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfNXBjXzIwMTBfdXNldGZbWzFdXSkKCnZhcl8xMHBjXzIwMTBfZ2xvYl9ldGYgPSBjYXZfc2ltdWwoYygiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTAtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAxMCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjEwLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9nbG9iX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xMHBjXzIwMTBfZ2xvYl9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xMHBjXzIwMTBfdXNldGZbWzFdXSkKYGBgCgojIyMgQ29tbW9kaXR5IEVURnMKCmBgYHtyfQojIDElLCA1JSwgMTAlIFZhUiAtIDIwMTAgLSAzcmQgc2V0IG9mIHByZWRpY3RvcnMKIyB2YXJfMXBjXzIwMTBfY29tbV9ldGYgPSBjYXZfc2ltdWwoYygiREJBIiwgIkRCQyIsICJEQkUiLCAiREJCIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTAtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLCB0YXUgPSAwLjAxLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9jb21tX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xcGNfMjAxMF9jb21tX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzFwY18yMDEwX3VzZXRmW1sxXV0pCgojIHZhcl81cGNfMjAxMF9jb21tX2V0ZiA9IGNhdl9zaW11bChjKCJEQkEiLCAiREJDIiwgIkRCRSIsICJEQkIiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA2LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxMC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDQsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfY29tbV9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfNXBjXzIwMTBfY29tbV9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl81cGNfMjAxMF91c2V0ZltbMV1dKQoKIyB2YXJfMTBwY18yMDEwX2NvbW1fZXRmID0gY2F2X3NpbXVsKGMoIkRCQSIsICJEQkMiLCAiREJFIiwgIkRCQiIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDYtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDEwLTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjEwLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9jb21tX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xMHBjXzIwMTBfY29tbV9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xMHBjXzIwMTBfdXNldGZbWzFdXSkKYGBgCgojIyMgQm9uZCBFVEZzCgpgYGB7cn0KIyBpU2hhcmVzIDEtMyBZZWFyIFRyZWFzdXJ5IEJvbmQgRnVuZCAoU0hZKQojIGlTaGFyZXMgNy0xMCBZZWFyIFRyZWFzdXJ5IEJvbmQgRnVuZCAoSUVGKQojIGlTaGFyZXMgMjArIFllYXIgVHJlYXN1cnkgQm9uZCBGdW5kIChUTFQpCiMgaVNoYXJlcyBpQm94eCAkIEludmVzdG1lbnQgR3JhZGUgQ29ycG9yYXRlIEJvbmQgRVRGIChMUUQpCgojIDElLCA1JSwgMTAlIFZhUiAtIDIwMTAgLSA0dGggc2V0IG9mIHByZWRpY3RvcnMKdmFyXzFwY18yMDEwX2JvbmRfZXRmID0gY2F2X3NpbXVsKGMoIlNIWSIsICJJRUYiLCAiVExUIiwgIkxRRCIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDYtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDEwLTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCwgdGF1ID0gMC4wMSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYm9uZF9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMTBfYm9uZF9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xcGNfMjAxMF91c2V0ZltbMV1dKQoKdmFyXzVwY18yMDEwX2JvbmRfZXRmID0gY2F2X3NpbXVsKGMoIlNIWSIsICJJRUYiLCAiVExUIiwgIkxRRCIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDYtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDEwLTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjA1LCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9ib25kX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl81cGNfMjAxMF9ib25kX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDEwX3VzZXRmW1sxXV0pCgp2YXJfMTBwY18yMDEwX2JvbmRfZXRmID0gY2F2X3NpbXVsKGMoIlNIWSIsICJJRUYiLCAiVExUIiwgIkxRRCIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDYtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDEwLTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjEwLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9ib25kX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xMHBjXzIwMTBfYm9uZF9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xMHBjXzIwMTBfdXNldGZbWzFdXSkKYGBgCgojIyMgQWxsIEVURnMKCmBgYHtyfQojIDElLCA1JSwgMTAlIFZhUiAtIDIwMTAgLSA1dGggc2V0IG9mIHByZWRpY3RvcnMKdmFyXzFwY18yMDEwX2FsbF9ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiLCAiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiwgIlNIWSIsICJJRUYiLCAiVExUIiwgIkxRRCIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMDYtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDEwLTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMjMsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsIHRhdSA9IDAuMDEsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2FsbF9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMTBfYWxsX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzFwY18yMDEwX3VzZXRmW1sxXV0pCgp2YXJfNXBjXzIwMTBfYWxsX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIsICJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiLCAiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAwNi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTAtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAyMywgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjA1LCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9hbGxfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzVwY18yMDEwX2FsbF9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl81cGNfMjAxMF91c2V0ZltbMV1dKQoKdmFyXzEwcGNfMjAxMF9hbGxfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiwgIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIsICJTSFkiLCAiSUVGIiwgIlRMVCIsICJMUUQiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA2LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxMC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDIzLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2FsbF9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMTBwY18yMDEwX2FsbF9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xMHBjXzIwMTBfdXNldGZbWzFdXSkKYGBgCgojIyAyMDE0IEVuZGluZwoKIyMjIFUuUy4gRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNCAtIDFzdCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTRfdXNfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTQtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA5LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLCB0YXUgPSAwLjAxLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9VU19FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMTRfdXNfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMTRfdXNldGZbWzFdXSkKCnZhcl81cGNfMjAxNF91c19ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEwLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDksIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfVVNfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzVwY18yMDE0X3VzX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDE0X3VzZXRmW1sxXV0pCgp2YXJfMTBwY18yMDE0X3VzX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTAtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE0LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gOSwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjEwLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9VU19FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMTBwY18yMDE0X3VzX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNF91c2V0ZltbMV1dKQpgYGAKCiMjIyBHbG9iYWwgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNCAtIDJuZCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTRfZ2xvYl9ldGYgPSBjYXZfc2ltdWwoYygiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTQtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAxMCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCwgdGF1ID0gMC4wMSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfZ2xvYl9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMTRfZ2xvYl9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xcGNfMjAxNF91c2V0ZltbMV1dKQoKdmFyXzVwY18yMDE0X2dsb2JfZXRmID0gY2F2X3NpbXVsKGMoIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTAtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE0LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMTAsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfZ2xvYl9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfNXBjXzIwMTRfZ2xvYl9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl81cGNfMjAxNF91c2V0ZltbMV1dKQoKdmFyXzEwcGNfMjAxNF9nbG9iX2V0ZiA9IGNhdl9zaW11bChjKCJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEwLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDEwLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2dsb2JfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAxNF9nbG9iX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNF91c2V0ZltbMV1dKQpgYGAKCiMjIyBDb21tb2RpdHkgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNCAtIDNyZCBzZXQgb2YgcHJlZGljdG9ycwojIHZhcl8xcGNfMjAxNF9jb21tX2V0ZiA9IGNhdl9zaW11bChjKCJEQkEiLCAiREJDIiwgIkRCRSIsICJEQkIiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEwLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDQsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsIHRhdSA9IDAuMDEsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2NvbW1fRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzFwY18yMDE0X2NvbW1fZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMTRfdXNldGZbWzFdXSkKCiMgdmFyXzVwY18yMDE0X2NvbW1fZXRmID0gY2F2X3NpbXVsKGMoIkRCQSIsICJEQkMiLCAiREJFIiwgIkRCQiIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTAtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE0LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjA1LCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9jb21tX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl81cGNfMjAxNF9jb21tX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDE0X3VzZXRmW1sxXV0pCgojIHZhcl8xMHBjXzIwMTRfY29tbV9ldGYgPSBjYXZfc2ltdWwoYygiREJBIiwgIkRCQyIsICJEQkUiLCAiREJCIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTQtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2NvbW1fRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAxNF9jb21tX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNF91c2V0ZltbMV1dKQpgYGAKCiMjIyBCb25kIEVURnMKCmBgYHtyfQojIGlTaGFyZXMgMS0zIFllYXIgVHJlYXN1cnkgQm9uZCBGdW5kIChTSFkpCiMgaVNoYXJlcyA3LTEwIFllYXIgVHJlYXN1cnkgQm9uZCBGdW5kIChJRUYpCiMgaVNoYXJlcyAyMCsgWWVhciBUcmVhc3VyeSBCb25kIEZ1bmQgKFRMVCkKIyBpU2hhcmVzIGlCb3h4ICQgSW52ZXN0bWVudCBHcmFkZSBDb3Jwb3JhdGUgQm9uZCBFVEYgKExRRCkKCiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNCAtIDR0aCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTRfYm9uZF9ldGYgPSBjYXZfc2ltdWwoYygiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTQtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLCB0YXUgPSAwLjAxLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9ib25kX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xcGNfMjAxNF9ib25kX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzFwY18yMDE0X3VzZXRmW1sxXV0pCgp2YXJfNXBjXzIwMTRfYm9uZF9ldGYgPSBjYXZfc2ltdWwoYygiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTQtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMDUsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2JvbmRfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzVwY18yMDE0X2JvbmRfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfNXBjXzIwMTRfdXNldGZbWzFdXSkKCnZhcl8xMHBjXzIwMTRfYm9uZF9ldGYgPSBjYXZfc2ltdWwoYygiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTQtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2JvbmRfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAxNF9ib25kX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNF91c2V0ZltbMV1dKQpgYGAKCiMjIyBBbGwgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNCAtIDV0aCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTRfYWxsX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIsICJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiLCAiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTQtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAyMywgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCwgdGF1ID0gMC4wMSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYWxsX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xcGNfMjAxNF9hbGxfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMTRfdXNldGZbWzFdXSkKCnZhcl81cGNfMjAxNF9hbGxfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiwgIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIsICJTSFkiLCAiSUVGIiwgIlRMVCIsICJMUUQiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEwLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNC0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDIzLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMDUsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2FsbF9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfNXBjXzIwMTRfYWxsX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDE0X3VzZXRmW1sxXV0pCgp2YXJfMTBwY18yMDE0X2FsbF9ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiLCAiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiwgIlNIWSIsICJJRUYiLCAiVExUIiwgIkxRRCIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTAtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE0LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMjMsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4xMCwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYWxsX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xMHBjXzIwMTRfYWxsX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNF91c2V0ZltbMV1dKQpgYGAKCgojIyAyMDE2IEVuZGluZwoKIyMjIFUuUy4gRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNiAtIDFzdCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTZfdXNfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTYtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA5LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLCB0YXUgPSAwLjAxLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9VU19FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMTZfdXNfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMTZfdXNldGZbWzFdXSkKCnZhcl81cGNfMjAxNl91c19ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEyLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNi0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDksIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfVVNfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzVwY18yMDE2X3VzX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDE2X3VzZXRmW1sxXV0pCgp2YXJfMTBwY18yMDE2X3VzX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTItMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE2LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gOSwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjEwLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9VU19FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMTBwY18yMDE2X3VzX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNl91c2V0ZltbMV1dKQpgYGAKCiMjIyBHbG9iYWwgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNiAtIDJuZCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTZfZ2xvYl9ldGYgPSBjYXZfc2ltdWwoYygiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTYtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAxMCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCwgdGF1ID0gMC4wMSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfZ2xvYl9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfMXBjXzIwMTZfZ2xvYl9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl8xcGNfMjAxNl91c2V0ZltbMV1dKQoKdmFyXzVwY18yMDE2X2dsb2JfZXRmID0gY2F2X3NpbXVsKGMoIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTItMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE2LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMTAsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4wNSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfZ2xvYl9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfNXBjXzIwMTZfZ2xvYl9ldGYuY3N2IiwgdXZfbGlzdCA9IHZhcl81cGNfMjAxNl91c2V0ZltbMV1dKQoKdmFyXzEwcGNfMjAxNl9nbG9iX2V0ZiA9IGNhdl9zaW11bChjKCJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEyLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNi0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDEwLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2dsb2JfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAxNl9nbG9iX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNl91c2V0ZltbMV1dKQpgYGAKCiMjIyBDb21tb2RpdHkgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNiAtIDNyZCBzZXQgb2YgcHJlZGljdG9ycwojIHZhcl8xcGNfMjAxNl9jb21tX2V0ZiA9IGNhdl9zaW11bChjKCJEQkEiLCAiREJDIiwgIkRCRSIsICJEQkIiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEyLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNi0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDQsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsIHRhdSA9IDAuMDEsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2NvbW1fRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzFwY18yMDE2X2NvbW1fZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMTZfdXNldGZbWzFdXSkKCiMgdmFyXzVwY18yMDE2X2NvbW1fZXRmID0gY2F2X3NpbXVsKGMoIkRCQSIsICJEQkMiLCAiREJFIiwgIkRCQiIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTItMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE2LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gNCwgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCx0YXUgPSAwLjA1LCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9jb21tX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl81cGNfMjAxNl9jb21tX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDE2X3VzZXRmW1sxXV0pCgojIHZhcl8xMHBjXzIwMTZfY29tbV9ldGYgPSBjYXZfc2ltdWwoYygiREJBIiwgIkRCQyIsICJEQkUiLCAiREJCIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTYtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2NvbW1fRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAxNl9jb21tX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNl91c2V0ZltbMV1dKQpgYGAKCiMjIyBCb25kIEVURnMKCmBgYHtyfQojIGlTaGFyZXMgMS0zIFllYXIgVHJlYXN1cnkgQm9uZCBGdW5kIChTSFkpCiMgaVNoYXJlcyA3LTEwIFllYXIgVHJlYXN1cnkgQm9uZCBGdW5kIChJRUYpCiMgaVNoYXJlcyAyMCsgWWVhciBUcmVhc3VyeSBCb25kIEZ1bmQgKFRMVCkKIyBpU2hhcmVzIGlCb3h4ICQgSW52ZXN0bWVudCBHcmFkZSBDb3Jwb3JhdGUgQm9uZCBFVEYgKExRRCkKCiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNiAtIDR0aCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTZfYm9uZF9ldGYgPSBjYXZfc2ltdWwoYygiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTYtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLCB0YXUgPSAwLjAxLCBwcmludF9tZGwgPSAxLCBwcmludF9tcCA9IDEsIHBhdGggPSAiL1VzZXJzL3N0ZXZlbm1vZW4vRG9jdW1lbnRzL0dpdEh1Yi9DQVZpYVJfTVNfdGhlc2lzL0RhdGFfRXhwb3J0L1NQWV9ib25kX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xcGNfMjAxNl9ib25kX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzFwY18yMDE2X3VzZXRmW1sxXV0pCgp2YXJfNXBjXzIwMTZfYm9uZF9ldGYgPSBjYXZfc2ltdWwoYygiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTYtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMDUsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2JvbmRfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzVwY18yMDE2X2JvbmRfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfNXBjXzIwMTZfdXNldGZbWzFdXSkKCnZhcl8xMHBjXzIwMTZfYm9uZF9ldGYgPSBjYXZfc2ltdWwoYygiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTYtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSA0LCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMTAsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2JvbmRfRVRGX3J1bnMvIiwgZmlsZW5hbWUgPSAidmFyXzEwcGNfMjAxNl9ib25kX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNl91c2V0ZltbMV1dKQpgYGAKCiMjIyBBbGwgRVRGcwoKYGBge3J9CiMgMSUsIDUlLCAxMCUgVmFSIC0gMjAxNiAtIDV0aCBzZXQgb2YgcHJlZGljdG9ycwp2YXJfMXBjXzIwMTZfYWxsX2V0ZiA9IGNhdl9zaW11bChjKCJYTFUiLCAiWExQIiwgIlhMViIsICJYTEsiLCAiWExZIiwgIlhMSSIsICJYTEYiLCAiWExCIiwgIlhMRSIsICJKWEkiLCAiS1hJIiwgIklYSiIsICJJWFAiLCAiSVhOIiwgIlJYSSIsICJFWEkiLCAiSVhHIiwgIk1YSSIsICJJWEMiLCAiU0hZIiwgIklFRiIsICJUTFQiLCAiTFFEIiksIHJlc3BfdmFyID0gIlNQWSIsIHN0YXJ0X2RhdGUgPSAiMjAxMi0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMTYtMTItMzEiLCBudmFsID0gMjUwLCBudGVzdCA9IDI1MCwgbG93X20gPSAxLCBoaWdoX20gPSAyMywgbG93X3AgPSAxLCBoaWdoX3AgPSAxMCwgdGF1ID0gMC4wMSwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYWxsX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xcGNfMjAxNl9hbGxfZXRmLmNzdiIsIHV2X2xpc3QgPSB2YXJfMXBjXzIwMTZfdXNldGZbWzFdXSkKCnZhcl81cGNfMjAxNl9hbGxfZXRmID0gY2F2X3NpbXVsKGMoIlhMVSIsICJYTFAiLCAiWExWIiwgIlhMSyIsICJYTFkiLCAiWExJIiwgIlhMRiIsICJYTEIiLCAiWExFIiwgIkpYSSIsICJLWEkiLCAiSVhKIiwgIklYUCIsICJJWE4iLCAiUlhJIiwgIkVYSSIsICJJWEciLCAiTVhJIiwgIklYQyIsICJTSFkiLCAiSUVGIiwgIlRMVCIsICJMUUQiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDEyLTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAxNi0xMi0zMSIsIG52YWwgPSAyNTAsIG50ZXN0ID0gMjUwLCBsb3dfbSA9IDEsIGhpZ2hfbSA9IDIzLCBsb3dfcCA9IDEsIGhpZ2hfcCA9IDEwLHRhdSA9IDAuMDUsIHByaW50X21kbCA9IDEsIHByaW50X21wID0gMSwgcGF0aCA9ICIvVXNlcnMvc3RldmVubW9lbi9Eb2N1bWVudHMvR2l0SHViL0NBVmlhUl9NU190aGVzaXMvRGF0YV9FeHBvcnQvU1BZX2FsbF9FVEZfcnVucy8iLCBmaWxlbmFtZSA9ICJ2YXJfNXBjXzIwMTZfYWxsX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzVwY18yMDE2X3VzZXRmW1sxXV0pCgp2YXJfMTBwY18yMDE2X2FsbF9ldGYgPSBjYXZfc2ltdWwoYygiWExVIiwgIlhMUCIsICJYTFYiLCAiWExLIiwgIlhMWSIsICJYTEkiLCAiWExGIiwgIlhMQiIsICJYTEUiLCAiSlhJIiwgIktYSSIsICJJWEoiLCAiSVhQIiwgIklYTiIsICJSWEkiLCAiRVhJIiwgIklYRyIsICJNWEkiLCAiSVhDIiwgIlNIWSIsICJJRUYiLCAiVExUIiwgIkxRRCIpLCByZXNwX3ZhciA9ICJTUFkiLCBzdGFydF9kYXRlID0gIjIwMTItMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDE2LTEyLTMxIiwgbnZhbCA9IDI1MCwgbnRlc3QgPSAyNTAsIGxvd19tID0gMSwgaGlnaF9tID0gMjMsIGxvd19wID0gMSwgaGlnaF9wID0gMTAsdGF1ID0gMC4xMCwgcHJpbnRfbWRsID0gMSwgcHJpbnRfbXAgPSAxLCBwYXRoID0gIi9Vc2Vycy9zdGV2ZW5tb2VuL0RvY3VtZW50cy9HaXRIdWIvQ0FWaWFSX01TX3RoZXNpcy9EYXRhX0V4cG9ydC9TUFlfYWxsX0VURl9ydW5zLyIsIGZpbGVuYW1lID0gInZhcl8xMHBjXzIwMTZfYWxsX2V0Zi5jc3YiLCB1dl9saXN0ID0gdmFyXzEwcGNfMjAxNl91c2V0ZltbMV1dKQpgYGAKCiMgSlVOSyBDT0RFCgpQcm9ibGVtIHNvbHZpbmcgb24gNC4yNS4yMDIwIHRvIHNlZSB3aHkgY29tbW9kaXRpZXMgRVRGcyBjb2RlIGhhZCBhIHByb2JsZW0uCgpgYGB7cn0KIyBjb21tX2RmID0gZGlmZl9pbmRleF9kZihjKCJEQkEiLCAiREJDIiwgIkRCRSIsICJEQkIiKSwgcmVzcF92YXIgPSAiU1BZIiwgc3RhcnRfZGF0ZSA9ICIyMDA0LTAxLTAxIiwgZW5kX2RhdGUgPSAiMjAwOC0xMi0zMSIsIGxhZ19wcmVkID0gMSkKIyBoZWFkKGNvbW1fZGYpCiMgcGNfZGYgPSBwY19kaWZmX2luZGV4KGRmKQpgYGAK